基本上,我有一个用于splitViewController的两个MasterViewControllers,但我只能一次运行其中一个应用程序。两个MasterViewControllers都使用相同的DetailViewController。 当用户按下tabbarbutton时,将推送第二个masterViewController。
splitViewController直接在AppDelegate
中声明如下MasterViewControllerOne *mvc1 = [[MasterViewControllerOne alloc] initWithNibName:@"MasterViewControllerOne_iPad" bundle:nil];
UINavigationController *masterOneNavigationController = [[UINavigationController alloc] initWithRootViewController:mvc1];
DetailViewController *dvc = [[DetailViewController alloc] initWithNibName:@"DetailViewController_iPad" bundle:nil];
UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:dvc];
self.splitViewController = [[UISplitViewController alloc] init];
self.splitViewController.delegate = detailViewController;
self.splitViewController.viewControllers = @[masterOneNavigationController, detailNavigationController];
self.window.rootViewController = self.splitViewController;
在运行时,我希望MasterViewControllerTwo与MasterViewControllerOne交换
推送新视图控制器的操作:
MasterViewControllerTwo*mvc2=[[MasterViewControllerTwo alloc]initWithNibName:@"MasterViewControllerTwo_iPad" bundle:nil];
[self.navigationController pushViewController:mvc2 animated:YES];
这在mvc1顶部的mvc2中交换。但是,在mvc2中点击tableview的行不会激活DetailViewController。
要激活DetailView(mvc1和mvc2相同),请执行以下操作
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Item *theItem =[[self.items objectAtIndex:[indexPath section]]objectAtIndex:[indexPath row]];
[self.detailViewController setLabelsForItems:theItem];
}
只要在appdelegate中将MasterViewController定义为splitviewcontrollers数组的成员,就可以正常工作。那么为什么mvc2在它位于堆栈顶部时不激活DetailViewController呢?
答案 0 :(得分:0)
在mvc2中点击tableview的行不会激活 DetailViewController
嗯,这本身并不会神奇地发生。当您选择第二个表视图的行时,由您决定。您没有显示任何代码,因此假设您没有。
换句话说,除了包含主控和细节之外,拆分视图控制器本身不执行任何操作。主人和细节之间的沟通取决于你。模板向您展示了您需要做的事情。