イメージをディスクに保存するのに数秒かかります。ビューが閉じられてもビューが更新されなくなるまで、アクティビティインジケータを表示します。Segueの準備が完了したらSwift 3 - viewは更新されません
それは却下される前。これは、ビューコントローラから呼び出された私の関数で、次のとおりです。
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")
}
}
2つのprint文を実行し、デバッガはインジケータがサブビューとしてメインビューに追加されたことを示しています画面には表示されません。何か不足していますか?
viewDidLoadで同じコードを実行すると、画面中央に正しく表示されるため、インジケータの位置は問題ではないことがわかりました。
UPDATE
私は、デリゲートを使用してセグエ機能を再現したのだが、すべてを正しく保存していますが、問題が残っています。まだ活動インジケータはありません。
@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)
}
UPDATE 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