2013-11-28 12 views
7

私のアプリは次のように構成されています:UITabBarController> UINavigationController> ViewControllerOne> ViewControllerTwo。 UINavigationBarの下部にタブバーがあります。ユーザーが2番目のビューコントローラーに移動すると、タブバーを非表示にしてツールバーに置き換えたいと思っています。私はこのコードを試しました:ツールバー/タブバーを交互に表示

[self.navigationController.tabBarController.tabBar setHidden:YES]; 
[self.navigationController.toolbar setHidden:NO]; 

私は、タブバーは表示されませんツールバーが表示されません。プラス、最後のVCはテーブルビューコントローラなので、セルをスクロールすると、テーブルとビューの下端の間に白い隙間ができます。どうすれば修正できますか?

+0

ここでは、このメソッドを呼び出しますか?それはviewDidAppearですか?それをそこに移そうとしないならば。 – Greg

+0

@Greg私はそこに置かなかったし、私はこれを試みたが、それは動作しませんでした。私は2番目のビューコントローラのインスペクタからツールバーを有効にし、アイテムを追加しました(これもクラスに接続しました)。しかし、それは動作していません。何も表示されず、まだ白い隙間があります。入力のおかげで。 – HusseinB

+0

@Gregシミュレートされたメトリックの下でインスペクタの大丈夫、私は "表示ツールバー"を確認したが、タブバーとツールバーが各トーアの上に表示されます。私はそれを修正する方法を見つけるだろう。 – HusseinB

答えて

10

をself.tabBarController.viewに追加しよう空白を取得する)。あなたのinitメソッドまたはawakeFromNibで

self.hidesBottomBarWhenPushed = YES; 

を使用する必要があります...そして、例えばのviewDidLoadで、その後

[self.navigationController setToolbarHidden:NO animated:YES]; 

ます。

タブバーを非表示にすると、タブバーコントローラの表示が正しくレイアウトされるようになります。 self.hidesBottomBarWhenPushed = NOを呼び出すことを忘れないでください。あなたの最初のビューコントローラでは、それ以外の場合、タブバーは、第2のビューコントローラがナビゲーションスタックからポップされたときに隠されます。

+0

入力いただきありがとうございます!それはうまくいった!しかし、私はソースビューコントローラではなく、宛先ビューコントローラに配置しました。私はprepareForSegueにそれを置いた:initではない。 – HusseinB

+0

ありがとうございます!これは私のプロジェクトで私を助けました。 – anna

+0

最初のVCまたは2番目のVCでhidesBottomBarWhenPushedを呼び出すかどうか混乱しました。最後にawakeFromNibで2番目のVCが呼び出され、魅力的に機能しました。 (ViewDidLoadに追加しても機能しませんでした) –

0

あなたはサブビューは、(適切に調整されないことのようにタブバーを非表示にしたときになぜそれがですので、適切なフレームとツールバーを割り当て、動作しません