2012-02-12 4 views
4

私のiOSアプリケーションでは、Xcodeでセグの設定をしたUINavigationControllerを使用しています。ビューの1つについては、ナビゲーションバーを非表示にしたいので、他のビューでは表示するようにします。私は正常にメインビューでバーを非表示にすることができますし、次に次のビューに進むときにうまくアニメートしますが、(ナビゲーションバーの戻るボタンを使用して)戻ると、バーが消え、黒その後、直前のビューに戻ります。私はprepareForSegueの反対のようなものでこれを捕まえることができるようにしたいと思うし、ナビゲーションバーをうまく動かす。これを行うにはいくつかの方法がありますか?ビューのUIViewControllerあなたは、ナビゲーションバーには、以下の方法を置き、表示されるようにすることでprepareForSegueと似ていますが、戻ってくるとき

答えて

2

現在prepareForSegue:sender:の代わりにprepareForDesegue:sender:がありません。推奨される方法は、宛先ViewControllerの参照番号をViewControllerに戻すことです。その後、宛先ViewControllerが却下されたときには、ViewControllerの先頭になることを通知元ViewControllerに再度通知することができます。 通常、参照はprepareForSegue:sender:に確立されています。

これを具体的にするために、ViewControllerAがあり、これをViewControllerBにセグメントするとします。 ViewControllerBでは、ViewControllerAを参照するプロパティを定義します。 その後、prepareForSegue:sender:に、あなたは次のことを行うだろう(これはちょうどViewControllerB@property ViewControllerA *delegate;を持っていることを前提とし、多くの場合、プロトコルを使用して行われますが、それを簡単にするために):

ViewControllerB * vcB = (ViewControllerB *)[segue destinationViewController]; 
vcB.delegate = self; 

その後、ViewControllerBで、どのようなコードでありますViewControllerAにお戻りになる場合は、self.delegateを使用してViewControllerAに戻り、提示されようとしていることをお知らせし、UINavigationBarで必要なことを行う機会を与えてください。

0

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 

    [self.navigationController setNavigationBarHidden:YES animated:animated]; 
} 


- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 


    [self.navigationController setNavigationBarHidden:NO animated:animated]; 
} 

あなたはバーが特定の次のような何らかの理由(のために固執したい場合には、いくつかのロジックを追加することができますビューにはまだバーが必要です)。

+0

はい、それは私が前進するならば、私はバーの周りをしたいですが、私が戻った場合にのみ、私はそれをアニメートしたいです。どのようなロジックを使ってそれを行うことができますか? – Brice

関連する問題