私は一度に1つのオブジェクトでいっぱいになるUIViewController(ビューコントローラBを呼び出すことができます)の内部にUITableViewを持っています。オブジェクトは以前のUIViewController(ビューコントローラA)で作成され、ビューコントローラAのprepare(segue:_)関数のテーブルのデータソース(ビューコントローラBでもあります)に追加されます。その時点で、ユーザはコントローラAに戻す「テーブルに追加」セルをタップすることができ、プロセスは繰り返される。問題は、コントローラBを表示するたびにテーブルビューに最後に追加されたオブジェクトしかないことです。これは、それぞれのSegueが移動しているViewControllerの新しいインスタンスを作成しているためです。これを防ぐには、どうやって再インスタンス化されず、毎回空のリストとして上書きされないテーブルビューのデータソースを格納する場所を見つけるのですか?どのようにUIViewControllerがセグの間に再インスタンス化をしないようにするには?
ビューコントローラA
class ViewControllerA : UIViewController {
var object = MyObject(...)
...
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let viewB = segue.destination as! ViewControllerB
viewB.dataSource.append(object) //
}
}
ビューコントローラB
class ViewControllerB: UIViewController, UITableViewDataSource, UITableViewDelegate {
var dataSource = [MyObject]()
//DataSource functions fill table with dataSource array objects
...
}
ああ、実際にViewController自体を再インスタンス化しないようにする効率的な方法はありません。巻き戻しの実装にリンクしてくれてありがとう、私はまだそれらを使用する方法をかなり知りませんでした。 –