2013-02-07 28 views
0

我正在使用Master-Detail模板。 我在细节视图中有一个分段控件,我已经将MasterViewController设置为委托。 这使我可以给用户选择。 我知道分段控件正在工作并将选择传递给MVC。如何更新MasterViewController中的表格

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

+1

你能详细说明吗?如果我理解了你的问题,那么我会在''MasterViewController''的'viewWillAppear'上每次使用'[tableView reloadData]' – viral

+0

你能编辑你的问题来包含你的代码吗?头文件和实现文件引用_tableChoiceToDisplay和chooseTopic? – ader

回答

0

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

告诉我,如果我得到您的问题错误

编辑:

拿一个integer命名segmentIndex;更新和更新段的时间。基于segmentIndex负荷值所需的dataSource将被显示在您的MasterViewController

EDIT 2 UITableView

UISegmentedControl的价值变化,把mvc.segmentIndex = (currentValueOfYourSegmentedControl); 然后在MasterViewControllerviewWillAppear

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

希望你明白我的意思。

+0

看起来很有前途,马特,但实例变量是什么?我曾尝试使用[tableView reloadData],但它没有奏效。 –

+0

@Steve编辑答案 – viral

+0

我已经在我的DVC中使用过这段代码:MasterViewController * mvc = [[MasterViewController alloc] init]; self.delegate = mvc; –

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

我知道这并不能回答你的问题本身,但它确实提供了一个替代解决方案,你正在试图解决这个问题。