我的Split View有多个DetialViewController。我有一个场景,我需要从一个DetailViewController
导航到另一个{{1}}。两者都在iPad的Splitview中。当我尝试推送或模态目标视图时,整个视图显示但不是左侧菜单或主视图控制器的拆分视图。
答案 0 :(得分:0)
你需要的只是看看Apple自己的THIS EXAMPLE,其中有多个DetailViewContrllers处理得很漂亮
在这里你会发现DetailView管理器管理哪个细节视图控制器应该根据用户输入显示。我想这就是你想要的。
希望它有所帮助。
答案 1 :(得分:0)
管理应显示哪个 detailViewController 。我会发布一个示例代码并解释这个想法,所以希望你能找到你的解决方案,反对这个想法。假设我有一个 splitView ,它添加到 mainView 的右侧:当用户点击显示在 splitView - >中的项目时行动是:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
MenuItem *item = [menuItems objectAtIndex:indexPath.row];
if(item && [item controller]) {
UINavigationController *currentNav= [splitView.viewControllers lastObject];
UIViewController *currentVC = currentNav.viewControllers[0];
if(currentVC != [item controller]) {
UINavigationController *newNavigation = [[UINavigationController alloc] initWithRootViewController:[item controller]];
NSArray *newVCs = [NSArray arrayWithObjects:self.navigationController,newNavigation,nil];
splitView.viewControllers = newVCs;
splitView.delegate = [item controller];
}
}
}
班级 MenuItem 管理已添加到 splitView 的项目。 menuItems 是一个数组,其中包含 splitView 中的项目。然后当用户点击某个项目时,我将使用当前语句检查新控制器:if(currentVC != [item controller])
。进入 MenuItem 将有一个变量 UIViewController * controller ,只需做一个方法:
- (MenuItem*)initWithTitle:(NSString *)_title controller:(UIViewController *)_controller imageName:(NSString *)_imageName {
self.title = _title;
self.controller = _controller;
self.imageName = _imageName;
return self;
}
当您需要将控制器添加为贝尔方法时,此方法将调用:
- (void) initMenuItems
{
menuItems = [[NSMutableArray alloc] init];
Item1 *itm1 =[[Item1 alloc] initWithNibName:@"item1" bundle:nil];
Item2 *itm2 = [[Item2 alloc] initWithNibName:@"item2" bundle:nil];
Item3 *itm3 = [[Item3 alloc] initWithNibName:@"item3" bundle:nil];
[menuItems addObject:itm1];
[menuItems addObject:itm2];
[menuItems addObject:itm3];
}
将此方法调用 mainViewController的 viewDidLoad
希望这会有所帮助