セルがタップされたときに UIViewController をモーダルに表示する UITableView があります。UIViewController は、タップされたセルに対応するモデル オブジェクトからデータを受け取り、それらのデータを編集するためのインターフェイスを表示します。ユーザーが編集を完了すると、ボタン タップで UIViewController が閉じられ、編集内容がモデル オブジェクトに書き込まれます。
次のコードは、メモリまたはデザインの問題を引き起こしますか?
UITableView サブクラスの実装を提示する際に、提示された UIViewController のデリゲートとして機能します。
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
UINavigationController *navigationController = segue.destinationViewController;
navigationController.delegate = this;
navigationController.dataModel = someDataModel;
}
// delegate callback
- (void) onViewControllerDone: (UIViewController *)controller {
[self.tableView reloadData];
}
提示された UIViewController サブクラスの実装では:
- (IBAction) done: (id)sender {
// directly modify dataModel passed into UIViewController with data from UI
[self.dataModel.someProperty setString: self.textView.text];
[self.delegate onViewControllerDone:self];
}
データ モデルをビューに渡し、ビューに変更を行わせるというのは、何かおかしなにおいがします。Objective-C / iOS 開発は初めてですが、これを行うためのより良い/推奨される方法があるかどうかわかりませんか?