Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 两个UISPlitViewController,1个(共享)详细视图_Objective C_Ipad_Uisplitviewcontroller_Uistoryboard_Uistoryboardsegue - Fatal编程技术网

Objective c 两个UISPlitViewController,1个(共享)详细视图

Objective c 两个UISPlitViewController,1个(共享)详细视图,objective-c,ipad,uisplitviewcontroller,uistoryboard,uistoryboardsegue,Objective C,Ipad,Uisplitviewcontroller,Uistoryboard,Uistoryboardsegue,要设置场景,我有: 具有两个选项卡的选项卡视图控制器 每个选项卡都有一个拆分视图控制器 我想将每个拆分视图控制器的详细视图指向 同样的观点 我附上了一个非常简单的 在iPad 5.1 Sim卡上运行,观察每个标签。一个显示共享详细视图,一个失败 NSLog调试报告第二个拆分视图具有空详细视图控制器: 2012-04-28 07:21:55.451 svcTest[14597:f803] tabBarController viewControllers = ( "UISplitView

要设置场景,我有:

  • 具有两个选项卡的选项卡视图控制器
  • 每个选项卡都有一个拆分视图控制器
  • 我想将每个拆分视图控制器的详细视图指向 同样的观点
我附上了一个非常简单的

在iPad 5.1 Sim卡上运行,观察每个标签。一个显示共享详细视图,一个失败

NSLog调试报告第二个拆分视图具有空详细视图控制器:

2012-04-28 07:21:55.451 svcTest[14597:f803] tabBarController viewControllers = ( "UISplitViewController: 0x6a36100", "UISplitViewController: 0x6a39ab0" ) 2012-04-28 07:21:55.455 svcTest[14597:f803] svcA.viewControllers = ( "UINavigationController: 0x6a36250", "UIViewController: 0x6a38720" ) 2012-04-28 07:21:55.457 svcTest[14597:f803] svcB.viewControllers = ( "UINavigationController: 0x6a39cc0" ) 2012-04-28 07:21:55.451 svcTest[14597:f803]tabBarController视图控制器=( “UISplitViewController:0x6a36100”, “UISplitViewController:0x6a39ab0” ) 2012-04-28 07:21:55.455 svcTest[14597:f803]svcA.viewControllers=( “UINavigationController:0x6a36250”, “UIViewController:0x6a38720” ) 2012-04-28 07:21:55.457 svcTest[14597:f803]svcB.viewControllers=( “UINavigationController:0x6a39cc0” ) 单击第二个选项卡时,会出现以下错误:

2012-04-28 07:22:58.457 svcTest[14597:f803] Splitview controller is expected to have a detail children before its used! 2012-04-28 07:22:58.459 svcTest[14597:f803] Split view controller should have its children set before layout! 2012-04-28 07:22:58.457 svcTest[14597:f803]Splitview控制器在使用前预计会有一个详细的子项! 2012-04-28 07:22:58.459 svcTest[14597:f803]拆分视图控制器在布局之前应该设置其子级! 看着故事板,我已经设置了细节视图,这让我很困惑

如果您能帮助在每个选项卡上显示此“共享”视图,我们将不胜感激


谢谢

我在为splitViewController指定两个以上的ViewController时收到了相同的警告,如下所示:

self.splitViewController.viewControllers = @[masterNavigationController, detailNavigationController, subViewController];
当我从阵列中删除“subViewController”时,警告消失了

在阅读了苹果关于添加/删除子视图的文档后,它提到了以下内容:

此属性中的数组必须正好包含两个视图控制器。当处于横向时,视图控制器在拆分视图界面中从左到右显示。因此,索引0处的视图控制器显示在界面的左侧,索引1处的视图控制器显示在界面的右侧


您可以查看到的链接以了解更多信息。

问题在于应用程序代理的
-applicationdFinishLaunchingwithoptions:

这里,拆分视图控制器委托设置在视图控制器之前。这似乎是问题的根源,如果按如下所示反转两行,警告消息将消失:

请改用此代码:

self.splitViewController = [[UISplitViewController alloc] init];
self.splitViewController.viewControllers = [NSArray
                           arrayWithObjects:masterNavigationController,
                           detailNavigationController, nil];
self.splitViewController.delegate = detailViewController;

有关详细说明,请参阅:

谢谢您的建议。我没有看到在.viewControllers分配之后移动.delegate时警告消失,但在我的例子中,我可以通过移动在.viewControllers之后设置的一些属性来修复它(特别是preferredDisplayMode、preferredPrimaryColumnWidthFraction…)。我在写iOS 9.3。