5

は私が持っている場面を設定するには1(共有)詳細ビュー:2つのタブ 二UISplitViewControllers、

  • 各タブには、スプリットビューコントローラを持っていると

    • Aタブのビューコントローラを
    • 私がしたいのですが各スプリットビューコントローラーの詳細ビューで のSAMEビューを指定します。

    非常に単純なsample project showing the issueが添付されています。

    iPad 5.1 Simで実行して、各タブを確認します。 1つは共有詳細ビューを示し、1つは失敗します。

     
    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" 
    ) 
    

    あなたはこのエラーを取得する2番目のタブをクリックすると::

    のNSLogのデバッグは、第2分割ビューはNULLディテール・ビュー・コントローラを持っていることを報告し

    私が持っているストーリーボードを見てみると
    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!

    これは本当に私を混乱させるように、詳細ビューを既に設定しています。

    Storyboard

    各タブに表示されるまで、この「共有」ビューを取得すべてのヘルプははるかに高く評価されます。

    ありがとうございます!

  • 答えて

    1

    以下に示すようにsplitViewControllerためつ以上viewControllersを指定する場合、私は同じ警告を受け取った:

    self.splitViewController.viewControllers = @[masterNavigationController, detailNavigationController, subViewController]; 
    

    iは、警告が消えアレイから「subViewController」を除去します。

    サブビューを追加/削除するには、Appleのドキュメントを読んだ後、それは次のように言及している:

    The array in this property must contain exactly two view controllers. The view controllers are presented left-to-right in the split view interface when it is in a landscape orientation. Thus, the view controller at index 0 is displayed on the left side and the view controller at index 1 is displayed on the right side of the interface.

    あなたはより多くの情報のためUISplitViewController Class Referenceへのリンクをチェックアウトすることができます。問題はここにアプリケーションデリゲートの-applicationdidFinishLaunchingWithOptions:

    にあるいくつかの行の配置である

    1

    、分割ビューコントローラデリゲートはviewControllers前に設定されています。これが問題の原因であると思われると、警告メッセージの下に示すように、次の2つのラインを逆にあれば消える:

    を使用し、このコードを代わりに:

    詳細な説明については
    self.splitViewController = [[UISplitViewController alloc] init]; 
    self.splitViewController.viewControllers = [NSArray 
              arrayWithObjects:masterNavigationController, 
              detailNavigationController, nil]; 
    self.splitViewController.delegate = detailViewController; 
    

    、あなたが見てみることができます:Splitview Controller Is Expected to Have a Master View Controller

    +0

    お寄せいただきありがとうございます。 .viewControllersの割り当ての後で.delegateを動かすことによって警告が消えるのを見ることはできませんでしたが、私の場合は、.viewControllers(特にpreferredDisplayMode、preferredPrimaryColumnWidthFraction ...)の後に設定していたプロパティを移動して修正できました。私はiOS 9.3について書いています。 – ggould75