2012-02-12 43 views
4

在我的iOS應用程序中,我使用了一個UINavigationController和Xcode中的segues設置。對於其中一個視圖,我想隱藏導航欄,對於其他視圖,我希望它顯示出來。我能夠在主視圖中成功隱藏酒吧,然後在我跳到下一個視圖時很好地進行動畫製作,但是當我返回時(使用導航欄中的後退按鈕),酒吧消失,留下黑色矩形,然後切換回前一個視圖。我希望能夠抓住這一點,像prepareForSegue的反面,並很好地導航欄。有沒有辦法做到這一點?東西像prepareForSegue但回去的時候

回答

2

目前沒有prepareForDesegue:sender:替代prepareForSegue:sender:。建議的做法是在目的地ViewController中建立一個參考,回到源ViewController。然後,當目的地ViewController被解僱時,它可以通知源ViewController它將再次成爲頂級ViewController。 通常,參考文獻建立在prepareForSegue:sender:

因此,爲了使這個具體,讓我們假設你有ViewControllerA,並且將要繼續到ViewControllerB。在ViewControllerB中,您將定義一個引用ViewControllerA的屬性。 (這是使用的協議經常做,而是使之簡單,只是假設,ViewControllerB具有@property ViewControllerA *delegate;) 然後,在prepareForSegue:sender:,你會做以下幾點:

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

後來,在ViewControllerB,在任何代碼爲了讓你回到ViewControllerA,你可以使用self.delegate來回到ViewControllerA,並讓它知道它即將被呈現,並且讓它有機會根據你需要做的任何事情來做UINavigationBar

0

在視圖中的要出現在導航欄上,將下面的方法UIViewController

- (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 2012-02-12 22:37:08