我在标签栏控制器中使用了一个masterdetail应用程序。从一个标签中,我正在收集一些数据并使用
tabBarController.selectedIndex=0;
这将转到具有masterview控制器的第一个选项卡。但是,我已在第三个选项卡中更新了数据库,并且必须在第一个选项卡的主详细信息应用程序中更新表内容。实际上,我需要调用
viewDidLoad
设置所选索引后的主详细信息应用程序的。谁能说怎么做呢。
答案 0 :(得分:3)
在新方法中重写viewDidLoad
的内容,并在viewWillAppear
上调用它们。
答案 1 :(得分:0)
有几种方法可以实现这一目标。
更改第一个标签中的代码,以便在您的视图显示而非加载时更新(推荐方法)
如果您对控制器有引用,则调用控制器的view方法强制viewDidLoad。
[self.localFundraiserController view];
使用通知。在用户输入某些数据后的第3个选项卡中,发送通知。在第一个标签中,查找通知并回复。
//1st tab controller:
-(void)viewDidLoad {
[self loadUserData:nil]
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadUserData:) name:@"kUserEnteredData" object:nil];
}
-(void)loadUserData:(NSNotification*)notification {
id userData = notification.object;
}
//3rd tab controller when user entered data
[[NSNotificationCenter defaultCenter] postNotificationName:@"kUserEnteredData" object:userData];
发布通知时,您可以传递将在loadUserData方法中读取的对象数据。这是可选的。通知的问题是无法保证第一个标签中的视图仍然被加载,因此可能无法响应通知。