0

このコントローラーを使用せずに同じ機能を複製したいのですが、これはタブバーコントローラーがカスタマイズできない(固定サイズ、切り替え可能な状態タブなど)ためです。UITabBarViewControllerの動作をシミュレートする方法は?

希望するビューを含むカスタマイズされた「タブバー」が必要です。また、ビューコントローラをプッシュして、このカスタマイズされたタブバーをその位置に固定したままにする必要があります。

私はこれを行うアプリをたくさん見ていましたが、別のUIWindowオブジェクト(カスタムタブバーと他のコンテンツのために1つ)を使用するのが最善の方法だったのだろうかと思いました。

これに関するアドバイスやガイダンスはありますか?

ありがとうございます。

答えて

1

もちろん、UIWindowsではありません。iPhoneアプリケーションではUIWindowが1つだけ必要です。

私はあなたの新しいナビゲーションバーuiを持っていたUIViewControllerサブクラスを作成し、その下にUIViewを配置します。このビューは、プッシュしようとしているコントローラのすべてのビューを格納するために使用されます。他のコントローラのビューがナビゲーションバーなどと重なっていないことを確認するには、clipsToBoundsをYESに設定します。

また、現在内部にあるコントローラのリストを保持する配列もあります。

コントローラはpushViewController:animated:メソッドなどを実装して、他のビューコントローラをスタックに追加することができます。新しいコントローラを配列に追加し、ビューをコントローラのビューのサブビューとして追加します。

しかし、実際にはこれをうまくいくためにはかなり多くの作業が必要です。ナビゲーションコントローラはメモリ不足の警告、ローテーションの処理、オン/オフビューのアニメーションなどで子コントローラビューを解放します。あなたはしたいですか?

+0

私は実装が難しいことを知っています。私はあなたのソリューションが好きです。代わりにナビゲーションコントローラであれば、私はメインコントローラにコンテンツビューを置くだけです。そして、これらのトランジション間のアニメーションを使って、必要なときにいつでもそのコンテンツビューを別のビューコントローラのビューに切り替えることができます。 –

+0

それはうまくいくだろうが、あなたはあなたの後ろのボタンをする必要があるでしょう:) – deanWombourne

0

私は非常に簡単な方法を使用しました。私はUITabbarControllerをサブクラス化し、init中:

// Custom TabBar View 
    // 
    self.tabBar.hidden = YES; 
    MyTabBarView *myTabBarView = [[MyTabBarView alloc] initWithFrame:CGRectMake(0, 1024-44, 768, 44) // it'a an iPad app 
                 configuration:configuration]; // an array of dictionary representing the view controllers 
    [self.view addSubview:myTabBarView]; 
    [bottomBarView release]; 

その後、私はいくつかのビューコントローラをロード:MyTabBarViewインスタンスから

aViewController.hidesBottomBarWhenPushed = YES; 

私はUITabBarViewControllerに実行します。

setSelectedIndex: 

このように、私は痛みのないカスタマイズ可能なフルスクリーンアプリケーションを提供します。

+0

良いと簡単なソリューションmarcioが、私は何かをプッシュしたい場合は静的な偽のタブバービューを残すだろう、ナビゲーションコントローラ? –

+0

おそらく私は理解できませんが、あなたがビューの階層と偽のバービューの可視性を意味するのであれば。さて、これをtabBarViewController.viewに追加しました。選択されたViewControllerの上にとどまるので、常に表示されます。このようにして、標準tabbarを表示せずにtabBarViewControllerの利点を得ることができます(そして、uinavigationなど)。 – marcio

関連する問題