2011-08-03 8 views
1

最初のタブにSplit Controllerを持つTabBar iPadアプリがあります。私はそれを作るために、この指示に従ってください:iOS:SplitViewのSplitViewのrootViewControllerをTabBarアプリで表示しない

http://www.iphonedevsdk.com/forum/iphone-sdk-development/62217-simplest-way-make-split-controller-tab-bar-controller.html

今、私の目標は、分割コントローラーのルートビューコントローラを非表示にすることです。私はこれを達成するための方法が見つかりました:

http://vimeo.com/13054813

をしかし、それは唯一の分割コントローラーがMainWindow.xibであると仮定すると動作しますので、それは、私の作品はありません。しかし、以前の方法では、スプリットコントローラがプログラムによって追加されています。

誰かが私の目標を達成するのを助けることができますか?任意のアイデアをいただければ幸いです。

ありがとうございます!私はあなたが私を助けることができると思います

http://dl.dropbox.com/u/27695108/MariCruz.zip


ここ

はコードです。

ありがとうございます!

+0

スプリットビューコントローラの作成方法に関係なく、ビデオに示されているアプローチは機能するはずです。あなたのコードを提出できますか?どのように具体的にそれをしようとしていますか?何がうまくいかない? – sergio

+0

私はコードを掲載します。どんなアイデアをいただければ幸いです –

答えて

1

あなたのプロジェクトにはいくつかの問題があります。

1最初は、UITabBarControllerを使用しているということです。そのため、ルートビューコントローラを非表示にしたコードは機能しません。

  1. 2つ目は、あなたが二回あなたのsplitViewControllerrootViewController、および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に対応するもの)でのみ機能します。実際、splitViewControllermakeSplitViewControllerに上書きしているため、これ以上の変更を加えずに、タブバーのインデックス1にある要素のみを使用できます。

+0

私が提案した変更を試すことができますか? – sergio

関連する問題