2011-12-16 27 views
3

これまでに多くの人が経験した問題に悩まされていますが、新しいiOSリリースが登場すると、 APIが変更されます。私の現在のセットアップ - XCode 4.2.1、iPhoneシミュレーター5.0またはiPhone 5.0、ア​​プリターゲットiOS5、ARCとStoryboardを使用して、以前のソリューションはどれも動作しません。TabBarは隠れていて、私が尋ねるにもかかわらず戻ってきたくない...

私は古典的なタブ付きのapp -ie UITabBarControllerを持っています.4つのタブ... 2〜4番目のタブを無視します。 最初のタブは、UITableViewControllerであるrootviewcontrollerを持つUINavigationControllerをホストします。今私は1つのCustomUIViewControllerをスタックにプッシュしています。

セットアップ全体がストーリーボードで視覚的に設計されており、プッシュはセグで行われます。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    self.hidesBottomBarWhenPushed = YES; 
} 

これは効果的にタブバーのiPodアプリがiPhoneにないとまったく同じ方法で非表示になります。

しかし、スタックからCustomUIViewControllerをポップすると、TabBarが戻ってこない。 私はすべての可能性と不可能な場所へ

self.hidesBottomBarWhenPushed = NO; 

を入れますが、運とされました。

どのように私のTabBarを戻すことができますか?ビューコントローラがスタックからポップされるまで

答えて

4

私はあなたが

segue.destinationViewController.hidesBottomBarWhenPushed = YES; 

代わりのself.hidesを設定する必要があると思う....

+0

ストーリーボードのビューコントローラインスペクタでこのチェックボックスもありませんか? –

+0

それは実際には – agilityvision

+0

私はそれをコンパイルすることはできません..それは言う - プロパティ "hidesBottomBarWhenPushed"タイプ "id"のオブジェクトに見つかりません。 –

3

Appleによると、「下のバーは非表示のまま。 "ナビゲーション階層の上のビューコントローラにポップアップしないかぎり、下のバーを「再表示」する方法はありません。

hidesBottomBarWhenPushedプロパティに関係しない他の回避策が必要です。 another SO questionでこれを達成する方法の良い説明があります。

+1

私はほとんど希望を失った後、あなたのコメントは "自己"が実際に指している箇所を調べて、ソースコントローラをポップできず、Eric Lars0nのソリューションをやり直すことができないことに気付きました。 –

7

これは将来の読者にクリーンな読み取り可能なソリューションを提供し、いくつかの関連する問題を明示的に策定するための、


問題を解決するには>

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    [segue.destinationViewController setHidesBottomBarWhenPushed:YES]; 
} 

次のコードで問題/混乱がtheprepareForSegueでいることを、事実にある:この方法は、プロパティを設定することが可能である上、「hidesBottomBarWhenPushed」ソースビューコントローラ(現時点では表示されているもの)または宛先ビューコントローラ(スタックにプッシュされているもの)に表示されます。これをどちらかの方法で設定することで、問題の最初の半分が解決されます。あなたのTabBarは隠されます。これは私の以前のコードの "隠れている"部分がうまくいった理由です。私はsource viewcontrollerのプロパティを設定していました。ソース・ビュー・コントローラ、ないdestionationビューコントローラへの私のコードで

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    self.hidesBottomBarWhenPushed = YES; 
} 
ここ

、「自己」のポイント。 これを宛先ビューコントローラに設定する必要があります。

最後に1つの問題..ドット表記を使用してこのコードは>

segue.destinationViewController.setHidesBottomBarWhenPushed = YES; 

を動作しません。あなたは解決策が正確にAppleの仕様に応じて、それが下のバーがするまで隠されたまま」と述べている。この

[segue.destinationViewController setHidesBottomBarWhenPushed:YES]; 

のようなセッターメソッドを呼び出しMUTビューコントローラ(hideプロパティがYESに設定されている)がスタックからポップされます。

最後のものは、

-(void)prepareForSegue:(UIStoryboardSegue *)segue 
       sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"SegueIdentifier"]) 
    { 
     [segue.destinationViewController setHidesBottomBarWhenPushed:YES]; 
    } 
} 

speficicセグエに非表示プロパティの設定を絞り込むことを忘れないでください、私は懸賞金が灰畦間、受け入れられた溶液に行く(二人のユーザーのための報酬を分割していますEric Lars0nに、これは私がこれを解決するのを助けた+恩恵に関する規則を読んだ後に来ることができる最も近いものです。

+0

ドット記法がここではうまくいかない理由について少し詳しく説明できますか? –

+0

バグかもしれないが、残念ながら私は知らない。 –

1

[segue.destinationViewController setHidesBottomBarWhenPushed:YES];prepareForSegueに入力するだけです。

私にとっては問題ありません。

関連する問題