对于您的问题,委托将是最佳选择。您在 SecondTableViewController 中定义协议并在 OriginalTableViewController 中实现该协议。当按下 Save 按钮时,第二个表会通知原始表与选定的数据,原始表可以弹出/关闭第二个表并重新加载其表。
在 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>
米:
- (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];
}
希望这可以帮助。