我正在使用Master-Detail模板。 我在详细视图中有一个分段控件,我已将MasterViewController设置为委托。 这使我能够为用户提供选择。 我知道分段控件正在工作并将选择传递给MVC。
我希望每个选项都能触发一组新数据,然后可以将这些数据加载到MasterViewController的表视图中。 我的问题是我无法找到更新表视图中数据的方法。
答案 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"];
}
我知道这本身并没有回答你的问题,但它确实为你要克服的问题提供了另一种解决方案。