我正在使用Master-Detail模板。 我在细节视图中有一个分段控件,我已经将MasterViewController设置为委托。 这使我可以给用户选择。 我知道分段控件正在工作并将选择传递给MVC。如何更新MasterViewController中的表格
我希望每个选项都能触发一组新的数据,然后可以将这些数据加载到MasterViewController的表格视图中。 我的问题是,我不能找到一种方法来更新表视图中的数据。
我正在使用Master-Detail模板。 我在细节视图中有一个分段控件,我已经将MasterViewController设置为委托。 这使我可以给用户选择。 我知道分段控件正在工作并将选择传递给MVC。如何更新MasterViewController中的表格
我希望每个选项都能触发一组新的数据,然后可以将这些数据加载到MasterViewController的表格视图中。 我的问题是,我不能找到一种方法来更新表视图中的数据。
您可以使用MasterViewController
中声明的实例变量进行更新,而UISegmentedControl
更改。基于此,当你回到MasterViewController
;使用其viewWillAppear
至[tableView reloadData]
告诉我,如果我得到您的问题错误。
编辑:
拿一个integer
命名segmentIndex
;更新和更新段的时间。基于segmentIndex
负荷值所需的dataSource
将被显示在您的MasterViewController
EDIT 2 UITableView
:
当UISegmentedControl
的价值变化,把mvc.segmentIndex = (currentValueOfYourSegmentedControl)
; 然后在MasterViewController
的viewWillAppear
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;
}
希望你明白我的意思。
看起来很有前途,马特,但实例变量是什么?我曾尝试使用[tableView reloadData],但它没有奏效。 –
@Steve编辑答案 – viral
我已经在我的DVC中使用过这段代码:MasterViewController * mvc = [[MasterViewController alloc] init]; self.delegate = mvc; –
如果是我,我会使用通知,而不是代表。即在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"];
}
我知道这并不能回答你的问题本身,但它确实提供了一个替代解决方案,你正在试图解决这个问题。
你能详细说明吗?如果我理解了你的问题,那么我会在''MasterViewController''的'viewWillAppear'上每次使用'[tableView reloadData]' – viral
你能编辑你的问题来包含你的代码吗?头文件和实现文件引用_tableChoiceToDisplay和chooseTopic? – ader