【问题标题】:iOS, iPad- Multiple split view controllers with same master and detail view controllersiOS、iPad - 具有相同主视图控制器和详细视图控制器的多个拆分视图控制器
【发布时间】:2014-03-07 13:28:48
【问题描述】:

我有选项卡式应用程序,3 个选项卡包含完全相同的屏幕,只是数据不同。

为了实现这些屏幕的功能,我使用了拆分视图控制器。 我需要做的是创建 3 个选项卡,它们都使用这个拆分视图控制器(具有相同的主视图控制器和细节视图控制器),而不在情节提要中重复主视图控制器和细节视图控制器三次。

我尝试创建三个拆分视图控制器并将它们全部链接到一个主视图控制器和一个详细视图控制器,但这不起作用。这些控制器中只有一个实际使用了它们。其他只是显示黑屏。

关于如何做到这一点的任何提示?

【问题讨论】:

    标签: ios ipad uisplitviewcontroller uitabbar


    【解决方案1】:

    我想我使用以下方法让它工作:

    在storyboard中,Split View Controller的Storyboard ID是'splitVc':

    然后,我在AppDelegate 中使用了以下代码:

    - (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        UISplitViewController *splitVc1 = [self.window.rootViewController.storyboard
            instantiateViewControllerWithIdentifier:@"splitVc"];
    
        UISplitViewController *splitVc2 = [self.window.rootViewController.storyboard
            instantiateViewControllerWithIdentifier:@"splitVc"];
    
        UISplitViewController *splitVc3 = [self.window.rootViewController.storyboard
            instantiateViewControllerWithIdentifier:@"splitVc"];
    
        UITabBarController *tabBarVc    = (UITabBarController *)self.window.rootViewController;
    
        tabBarVc.viewControllers        = @[splitVc1, splitVc2, splitVc3];
        return YES;
    }
    

    这给了我似乎是 UISplitViewController 的 3 个独立实例,每个实例分配到 UITabBarController 中的 3 个选项卡中的 1 个,这是我的 UIWindow 的根视图控制器。

    这是你想要的吗?

    【讨论】:

    • 当您执行此操作时,您不会在控制台中收到警告/错误吗?我并没有真正使用 Storyboards,但是当使用 UISplitViewController 时,它必须是 rootViewController,根据 Apple 的说法:“拆分视图控制器必须始终是您创建的任何界面的根。换句话说,您必须始终从aUISplitViewController 对象作为应用程序窗口的根视图。然后,拆分视图界面的窗格可能包含导航控制器、标签栏控制器或您需要实现界面的任何其他类型的视图控制器。"
    • 此配置可能无法通过 HIG,但我在 Xcode 中没有收到编译器/控制台警告。我不保证苹果会批准这个! ;-)
    • 它完全符合我的要求,但现在我遇到了另一个有趣的问题。 “tabBarController.selectedIndex”的值与选中的选项卡不一致。这意味着例如我选择第一个选项卡和 selectedIndex = 1。然后我选择另一个选项卡并重新选择第一个选项卡。选定的索引现在是 3。知道如何修复它吗?
    • 我通过比较 tabBarController.tabBar.selectedItem 的标题解决了这个问题
    • 您如何/何时检查您的 selectedIndexselectedItem 值?
    猜你喜欢
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多