将选定的行复制到填充Xcode中另一个UITableView的数组

时间:2012-05-01 20:19:11

标签: ios xcode uitableview ios5 delegates

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

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

自从4个月前开始学习如何编码以来,我不确切知道如何继续。我应该使用代表团吗?还是其他什么?我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:0)

对于您的问题,代表团将是最佳选择。您可以在SecondTableViewController中定义协议,并在OriginalTableViewController中实现该协议。按下“保存”按钮时,第二个表会使用所选数据通知原始表,原始表可以弹出/取消第二个表并重新加载其表。

在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];
}

希望这有帮助。