我正在使用主从模板。我在详细视图中有一个分段控件,并且我已将 MasterViewController 设置为委托。这使我能够给用户选择。我知道分段控件正在工作并将选择传递给 MVC。
我希望每个选择都能触发一组新数据,然后可以将其加载到 MasterViewController 中的表视图中。我的问题是我找不到更新表格视图中数据的方法。
您可以使用声明的实例变量在更改MasterViewController时进行更新UISegmentedControl。基于此,当你回到MasterViewController; 用它viewWillAppear来[tableView reloadData]
告诉我我是否把你的问题弄错了。
编辑:
取个名字integer吧segmentIndex;在 Segment 更改时更新。根据需要显示的segmentIndex负载值dataSourceUITableViewMasterViewController
编辑2:
当UISegmentedControl' 值改变时,放mvc.segmentIndex = (currentValueOfYourSegmentedControl); 然后在MasterViewController'sviewWillAppear
switch (self.segmentIndex)
{
    case 0:
           // Set Datasource for First Choice.
           break;
    case 0:
           // Set Datasource for Second Choice.
           break;
    case 0:
           // Set Datasource for Third Choice.... and so on...
           break;
    default:
           // Default Behavior
           break;
}
希望你明白我的意思。
如果是我,我会使用通知而不是代表。即使用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"];
}
我知道这本身并不能回答您的问题,但它确实为您试图克服的问题提供了另一种解决方案。