我有一個展開賽格瑞這需要幾秒鐘就可以完成,而其保存圖片到磁盤。我想直到視圖撤職,但視圖不更新以顯示活動的指標。斯威夫特3 - 觀點並不時更新賽格瑞準備叫
這是我的職責,這是從視圖控制器之前,它駁回叫:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "saveRecord" {
print("indicator")
let indicator = UIActivityIndicatorView()
indicator.frame = self.view.frame
indicator.activityIndicatorViewStyle = .whiteLarge
indicator.color = UIColor.blue
indicator.hidesWhenStopped = true
indicator.startAnimating()
self.view.addSubview(indicator)
self.view.layoutSubviews()
print("laid out subviews")
}
}
兩個打印語句執行和調試器顯示,該指標已添加到主視圖作爲一個子視圖,但它不會出現在屏幕上。我錯過了什麼嗎?
我知道指示器的位置是不是一個問題,因爲在運行的viewDidLoad中相同的代碼正確地顯示它在屏幕的中間。
UPDATE
我已經重新使用委託SEGUE功能,它正確地節省一切,但問題仍然存在。仍然沒有活動指標。
@IBAction func saveRecord(_ sender: Any) {
print("indicator")
let indicator = UIActivityIndicatorView()
indicator.frame = self.view.frame
indicator.activityIndicatorViewStyle = .whiteLarge
indicator.color = UIColor.blue
indicator.hidesWhenStopped = true
indicator.startAnimating()
self.view.addSubview(indicator)
self.view.layoutSubviews()
print("laid out subviews")
saveImages()
print("saved images")
self.delegate?.saveRecord(name: name!, category: category)
print("saved record")
self.navigationController?.popViewController(animated: true)
}
更新2
我真的糊塗了吧!這將啓動指標:
@IBAction func saveRecord(_ sender: Any) {
print("indicator")
indicator.startAnimating()
//saveImages()
//print("images saved")
//performSegue(withIdentifier: "saveRecord", sender: self)
}
但這並不:
@IBAction func saveRecord(_ sender: Any) {
print("indicator")
indicator.startAnimating()
saveImages()
print("images saved")
performSegue(withIdentifier: "saveRecord", sender: self)
}
您是否在代碼中調用了'performSegue'? –
感謝艾哈邁德。是的,我已經試過觸發SEGUE的各種方式,但我仍然得到同樣的問題。 – Chris