2012-04-17 8 views
2

私はストーリーボードを使用してインターフェースビルダーでアプリを作っています。UITabBarControllerのUITabBar機能

アイテムが選択されていないタブバーが必要です。これは

TabBar.SelectedItem = null; 

を設定することによって達成することができます。しかし、あなたがいることをしようとすると、次のエラーが発生します。

'Directly modifying a tab bar managed by a tab bar controller is not allowed.' 

だから私は、標準UITabBarControllerを使用することはできません。カスタムUIViewControllerを作成し、UITabBarを追加しました。タブ間の切り替えはうまく機能していますが、選択がないとうまくいきます。

しかし、他のビューコントローラをカスタムビューコントローラからタブバーで表示する方法はわかりません。私はinterfacebuilderを使用していることを覚えているので、新しいオブジェクトとしてコード内にビューコントローラを作成し、ビューに追加するだけではありません。 UITabBar funcionality without UITabBarControllerで提案)

UITabBarViewControllerを使用せずに自分のビューを表示するにはどうすればよいですか?


編集:解決策がまだ見つかりませんでしたが、私はハックフィックスを行いました。他のタブバーを簡単に作成し、元のタブバーの上に置きます。これらのイベントを聞き、表示されるビューを変更するにはSelectedIndexを使用してください。次に、あなた自身のタブバーの項目を選択/選択解除する機能を追加します。

答えて

1

実際には、IBから他人のデザインを行っても、コードからインスタンス化することができます。UIViewControllersおそらくフレームを少し再生してプロパティを自動サイズ変更して、メインビューの中に表示したい部分に合わせる必要がありますが、可能です。

ので、それを知って、簡単な解決策は、画面の一番上にあなたのUITabBarの上から画面を埋めるメインUIViewController、簡単なUIView(我々はそれを呼び出すよ「tabFrame」)を作成することです。あなたのタブに対応するUIViewControllerをインスタンス化し、そのビューをサブビューとしてtabFrameとして追加します。これで、必要なサブビューを表示または非表示にするために、タブバーからアイテム選択を取得するだけで済みます。

私は十分なはっきりしていることを願っています。そうでなければ、躊躇しないでください!

EDITは:ストーリーボードの文脈では、あなたが効果的にコードからviewControllers /シーンをインスタンス化することができますが、デザイナーの設定を失うことはないため、それがませStoryBoard.InstantiateViewController("vc_identifier")の呼び出しを介して直接自分のコンストラクタを呼び出すことによって行われますが、しなければならないことを今朝指摘しましたストーリーボードエディタでVCに識別子を設定した後

は、ええ、私はそのことを考えて、私たちはここにIBの話ではないしている例

+0

ためhttp://docs.xamarin.com/ios/recipes/General/Storyboard/Storyboard_a_TableViewを参照してください。私はストーリーボードを使用しています。 – RasmusWL

+0

私はストーリーボードエディターを意味しました、申し訳ありません。 – psycho

+0

ああ、私はXIBのことを考えていた:とにかく、私はコードからそれらをインスタンス化できることを知っているが、彼らは私がIBで作った設定の一部を緩める – RasmusWL

関連する問題