2

ストーリーボードを使用してインターフェイス ビルダーでアプリを作成しています。

項目が選択されていないタブ バーが必要です。これは、設定することで実現できます

TabBar.SelectedItem = null;

しかし、それを実行しようとすると、次のエラーが発生します。

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

だから私は標準を使用することはできませんUITabBarController。カスタムを作成しUIViewControllerUITabBar. タブ間の切り替えは正常に機能しており、選択がない場合も正常に機能しています。

しかし、カスタムView Controllerからタブバーを使用して他のView Controllerを表示する方法がわかりません。私は interfacebuilder を使用しているため、ビュー コントローラーをコードで新しいオブジェクトとして作成し、それらをビューに追加することはできません。( UITabBarController なしの UITabBar 機能で提案されているように)

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


編集:まだ解決策が見つかりませんが、ハッキーな修正を行いました。別のタブ バーを簡単に作成し、元のタブ バーの上に配置します。これらのイベントをリッスンしSelectedIndex、表示されるビューを変更するために使用します。次に、独自のタブバーの項目を選択/選択解除する関数を追加します。

4

1 に答える 1

1

実際、UIViewControllersIB から他のものを設計したとしても、コードからそれらをインスタンス化できます。フレームと自動サイズ変更のプロパティを少しいじって、メイン ビューの中に表示したい部分に合わせる必要があるかもしれませんが、それは可能です。

したがって、簡単な解決策は、 main で単純なUIView(「tabFrame」と呼びます)を作成することですUIViewController。これは、画面の上部から画面の上部までを埋めUITabBarます。タブに対応する をインスタンス化し、UIViewControllerそれらのビューを のサブビューとして追加しますtabFrame。必要なサブビューを非表示または表示するには、タブバーからアイテムの選択をキャッチする必要があります。

私が十分に明確であることを願っています。それ以外の場合は、遠慮なく質問してください。

編集:今朝、ストーリーボードのコンテキストでは、コードからビューコントローラー/シーンを効果的にインスタンス化できることを指摘しましたが、デザイナーの設定を失わないためにはコンストラクターを直接呼び出すことによってではなくStoryBoard.InstantiateViewController("vc_identifier")、ストーリーボードで VC に識別子を設定した後に呼び出しによって行う必要があります編集者。

たとえば、http://docs.xamarin.com/ios/recipes/General/Storyboard/Storyboard_a_TableViewを参照してください

于 2012-05-03T21:12:02.997 に答える