1

这是我的问题:我有两个要调用的 UITableViewController。OriginalTableViewController 和 SecondTableViewController。SecondTableViewController 由 NSMutableArray 和 UISegmentedControl 填充,用户可以在其中导航一堆数据并选择多行。

我想要做的是使用户能够选择多行,单击导航栏中的保存按钮,然后单击确定以关闭视图并返回必须由 SecondTableViewController 的选定行填充的 OriginalTableViewController。

自从我 4 个月前开始学习如何编码以来,我不知道该怎么做。我应该使用委托吗?还是别的什么?我将不胜感激任何帮助。

4

1 回答 1

0

对于您的问题,委托将是最佳选择。您在 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];
}

希望这可以帮助。

于 2012-06-08T06:34:46.040 回答