在 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 添加到 ma​​inView 的右侧:当用户点击显示在 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];

将此方法调用到您的 ma​​inViewController

viewDidLoad

希望这会有所帮助

【讨论】:

以上是关于在 Splitview 中从一个 Detail View 控制器导航到另一个 Detail VC的主要内容,如果未能解决你的问题,请参考以下文章

在拆分视图控制器 iOS8 目标 C 中从右侧打开主视图

在 Spark (v.1.5.2) 中从 SQL 查询创建表

甚至在 SplitView 中初始分配空间

如何在 asp.net core v 2.0 中从 javascript 调用 PageModel 方法

如何在情节提要中从一个视图转到另一个视图

如何在splitview中改变按钮的位置 uwp