UITableViewControllerにUIActivityIndicatorViewを表示させる
ビューコントローラ内で普通に
self.view.addSubview(indicator)
などとやってると、self.viewがUITableViewなので、テーブルの中にインジケーターが埋め込まれたように見えてしまう。 表示位置によってはインジケーターがセクションの下に潜り込んでしまってイケてない感じ。
テーブルの上に表示するにはself.viewではなく、self.navigationController?.viewに対して追加してやると良い。
var indicator:UIActivityIndicatorView?
override func viewDidLoad() {
super.viewDidLoad()
...
let indicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)
let screen = self.view.bounds.size
//中央に表示
indicator.center = CGPointMake(screen.width / 2, screen.height / 2 )
self.indicator = indicator
self.navigationController?.view.addSubview(indicator)
....
}
func hoge() {
self.indicator?.startAnimating()
self.view.userInteractionEnabled = false //処理中はテーブルをタップできないようにする。
...(長い処理)...
self?.indicator?.stopAnimating()
self?.view.userInteractionEnabled = true
}