在 Splitview 中从一个 Detail View 控制器导航到另一个 Detail VC
Posted
技术标签:
【中文标题】在 Splitview 中从一个 Detail View 控制器导航到另一个 Detail VC【英文标题】:Navigate from one Detail View contorller to another Detail VC in Splitview 【发布时间】:2014-03-21 10:01:57 【问题描述】:我的拆分视图有多个 DetialViewController。我有一个场景,我需要从一个 DetailViewController
导航到另一个。两者都在 iPad 的 Splitview 中。当我尝试推送或模态目标视图时,会显示整个视图,但不会显示为带有左侧菜单或主视图控制器的拆分视图。
【问题讨论】:
【参考方案1】:你只需要看看 Apple 自己的THIS EXAMPLE,那里有多个 DetailViewContrllers 是精美的句柄
在这里您会找到 DetailView 管理器,该管理器根据用户输入管理应显示哪个详细视图控制器。我猜这就是您想要的。
希望对你有帮助。
【讨论】:
【参考方案2】:To 管理应该显示哪个 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希望这会有所帮助
【讨论】:
以上是关于在 Splitview 中从一个 Detail View 控制器导航到另一个 Detail VC的主要内容,如果未能解决你的问题,请参考以下文章
在 Spark (v.1.5.2) 中从 SQL 查询创建表