2011-01-27 4 views
1

TabBarControllerをビューにプッシュするにはどうすればよいですか?TabBarControllerをビューにプッシュ

このアプリケーションはビューベースです。アプリケーションでは、TabBarControllerを持つXIBがあり、TabBarをディスプレイにプッシュしたいと思います。私はすべてをやったが、今は何が間違っているのか分からない。ここで

はTabBarControllerをプッシュする必要があるコードです:

- (void)showTabBar { 
TabBar *tbc = [[TabBar alloc] initWithNibName:@"TabBar" bundle:nil]; 
[self presentModalViewController:tbc animated:YES]; 
[tbc release]; 
} 

この時点ではXIBで空のビューがあります。したがって、このコードを実行すると、ディスプレイは白です。また、TabBarControllerも表示されます。

ありがとうございました。


UPDATE:

私は、これらの2つの異なるクラスであると言うべきです。関数 "showTabBar"の基になっているクラスは、TabBarControllerをプッシュする必要があります。 2番目のクラスはTabBarです。 TabBarはTabBarControllerのデリゲートです。

だから私はこのような答えを変更しましたが、私は両方を試してみました:

[self presentModalViewController:tbc.tabBarController.view animated:YES]; 

エラーは次のようになります。

Incompatible Objective-C types 'struct UIView *', expected 'struct UIViewController *' when passing argument 1 of 'presentModalViewController:animated:' from distinct Objective-C type 

UPDATE:

ねえ、エラーがなくなった。クール。 ;)

しかし、アプリケーションは終了しています。私はこれまでこの行動を見てきましたが、私は何をすべきか分かりませんでした。 デバッガコンソールは、これは言う:

2011-01-27 15:49:32.629 Touch[3657:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present a nil modal view controller on target <StartUp: 0x9300f20>.' 

答えて

2

UITabBarControllerクラスはのUIViewControllerクラスから継承するので、タブバーコントローラは、ビューのプロパティを介してアクセス可能な、独自の見解を持っています。 タブバーインターフェイスを展開する場合、このビューをウィンドウのルートとしてインストールする必要があります。他のビューコントローラとは異なり、タブバーインタフェースは、別のビューコントローラの子としてインストールされるべきではありません。この平均値は、これが「許可」されていないとAppleができるか、将来的にあなたのアプリケーションを拒否することが何

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITabBarController_Class/Reference/Reference.html

。 UITabBarControllerは、アプリケーションデリゲートのルートビュー(ウィンドウ)に追加されます。後でタブバーをプッシュするには、例えばUIToolBarを使用する必要があります。 uisegmentedcontrolまたはツールバーのボタン。

いくつかのアプリがこれを実行していても(Wordpressアプリなど)、後でViewControllerをモーダルに表示するときに、コンソールのいくつかの問題が発生することがわかります(警告が表示されます)。

+0

これは、私がTabBarControllerなしで自分でTabBarを構築する必要があるということですか? – teawithfruit

+0

私が知る限り、はい。コンパイラはUITabBarControllerのプッシュが間違っていると言っていないので、私は助けを得てドキュメントを読むまでこれがOKだと思ったので、私が作った1つのアプリケーションと同じ "間違い"をしました。暗黙の関係iOSは、parentViewController、tabBarController、navigationControllerを使ってあなたのために設定します)。私がやったことは、UIToolBarを作ることでした。私が中心になったUISegmentedControlを追加しました。しかし、UIToolBarItemをよく使うと、ほとんど同じ効果が得られます。しかし、ビューのプッシュ/ポップのロジックは失われます。 – LuckyLuke

+0

通常のビューを使用して、TabBarを構築するために必要なTabBarのすべての項目を入力しますか? – teawithfruit

関連する問題