あなたの問題については、委任が最良の選択です。SecondTableViewController でプロトコルを定義し、OriginalTableViewController でそのプロトコルを実装します。[保存] ボタンが押されると、2 番目のテーブルは選択されたデータを元のテーブルに通知し、元のテーブルは 2 番目のテーブルをポップ/破棄してそのテーブルをリロードできます。
SecondTableViewController.h で、プロトコルを定義します。
@protocol SecondDelegate <NSObject>
@required
- (void) didSelectRows:(NSArray *)rows;
@end
@interface SecondTableViewController : UITableViewController
@property (retain) id<SecondDelegate> delegate;
@end
OriginalTableViewController で、プロトコルを実装します: .h:
@interface OriginalTableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, SecondDelegate>
.m:
- (void) didSelectRows:(NSArray *)rows {
// Update the model with selected data and reload. Also pops/dismisses second table.
}
そして、SecondTableViewController をプッシュ/提示する直前にデリゲート プロパティを設定します。
SecondTableViewController *second = nil; // instantiate the vc some how
second.delegate = self;
SecondTableViewController.m で、save メソッドを実装します。
- (void) save {
NSMutableArray *array = [NSMutableArray array];
for (NSIndexPath *indexPath in [self.tableView indexPathsForSelectedRows]) {
// Populate array with selected objects.
}
[self.delegate didSelectRows:array];
}
お役に立てれば。