あなたのプロジェクトにはいくつかの問題があります。
1最初は、UITabBarController
を使用しているということです。そのため、ルートビューコントローラを非表示にしたコードは機能しません。
- 2つ目は、あなたが二回あなたの
splitViewController
、rootViewController
、およびdetailViewController
初期化されているmakeSplitViewController
の実装、と産みます。
だから、あなたは正しくこれらのコントローラのすべてを管理できるように、点2を修正する必要があり、その後、あなたはとてもあなたが考慮にあなたがUITabBarControllerを使用しているという事実を取ることtoggleSplitView
を変更する必要があります。たとえば、次のようなもので、そのメソッドの最初の数行を置き換えません:
- (void)toggleSplitView {
NSArray *controllers = _tabBarController.viewControllers;
UIViewController* controller = [controllers objectAtIndex:1];
if (controller.view == splitViewController.view) {
[splitViewController.view removeFromSuperview];
splitViewController.viewControllers = [NSArray arrayWithObjects:rootViewController, rootViewController, nil];
splitViewController.view = detailViewController.view;
} else {
....
あなたが言うように、私はそれはむしろ、そのビューが_windowの下にはないためUISplitがあるかどうかを確認するために_window
にアクセスしていますタブバーにあります。 if
のもう1つの支店も同じ基準に従って書き直す必要がありますが、私はあなたに任せます。
上記のコードは、2番目のタブ(インデックス1に対応するもの)でのみ機能します。実際、splitViewController
をmakeSplitViewController
に上書きしているため、これ以上の変更を加えずに、タブバーのインデックス1にある要素のみを使用できます。
スプリットビューコントローラの作成方法に関係なく、ビデオに示されているアプローチは機能するはずです。あなたのコードを提出できますか?どのように具体的にそれをしようとしていますか?何がうまくいかない? – sergio
私はコードを掲載します。どんなアイデアをいただければ幸いです –