如何更新MasterViewController中的表

时间:2013-02-07 12:12:54

标签: xcode ipad

我正在使用Master-Detail模板。 我在详细视图中有一个分段控件,我已将MasterViewController设置为委托。 这使我能够为用户提供选择。 我知道分段控件正在工作并将选择传递给MVC。

我希望每个选项都能触发一组新数据,然后可以将这些数据加载到MasterViewController的表视图中。 我的问题是我无法找到更新表视图中数据的方法。

2 个答案:

答案 0 :(得分:0)

您可以使用MasterViewController中声明的实例变量在UISegmentedControl更改时进行更新。基于此,当你回到MasterViewController;使用其viewWillAppear[tableView reloadData]

告诉我,如果我的问题错误

编辑:

integer命名为segmentIndex;更新时段和更改时段。根据{{​​1}}的值加载segmentIndex需要显示在dataSource

UITableView

编辑2:

MasterViewController的值发生变化时,请UISegmentedControl; 然后在mvc.segmentIndex = (currentValueOfYourSegmentedControl)' MasterViewController

viewWillAppear

希望你明白我的观点。

答案 1 :(得分:0)

如果是我,我会使用通知而不是代表。即使用detailViewController中的valueChanged检测segmentedControl值更改,然后从您的masterViewController接收的detailViewController发布NSNotification。

最简单的方法是:

[[NSNotificationCenter defaultCenter] postNotificationName:@"segmentOneChosen" object:nil userInfo:nil];

您是否有masterViewController注册此通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(segmentOneChosen) name:@"segmentOneChosen" object:nil];

最好将所选值与通知一起传递,这样您就不需要为每个段单独发送通知。

!!未经测试的代码:

NSArray *keys = [NSArray arrayWithObjects:@"segmentChosen", nil];
NSArray *objects = [NSArray arrayWithObjects:[NSNumber numberWithInt:self.topicsChoiceSegControl.selectedSegmentIndex], nil];
NSDictionary * dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
[[NSNotificationCenter defaultCenter] postNotificationName:@"segmentChosen" object:nil userInfo:dict];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(segmentChosen:) name:@"segmentChosen" object:nil];

-(void) segmentChosen:(NSNotification *)notification {
    NSNumber *segmentChosenNum = [[notification userInfo] valueForKey:@"segmentChosen"];
}

我知道这本身并没有回答你的问题,但它确实为你要克服的问题提供了另一种解决方案。