2016-11-21 54 views
1

假設我有兩個意見。如果我在第一個視圖中,並且執行了第二個視圖的推送。然後,如果用戶按下導航欄上的後退按鈕或從屏幕左側輕掃,我想執行一些代碼,這可能嗎?當用戶向右滑動以返回視圖時,您可以執行prepareForSegue嗎?

我會告訴你我想要做什麼,看看是否有更好的方法來做到這一點。幾乎我的第一個視圖沒有導航欄。然而,第二種觀點的確如此。從第一個視圖轉到第二個視圖時,沒有問題,就像導航欄顯示的動畫一樣。

但是,當我從第二個視圖返回到第一個視圖時,導航欄將停留在屏幕上,直到它完全從第二個視圖返回。

感謝您的幫助!

回答

1

所以我解決了這個問題的方法是用下面的方法:

override func viewWillDisappear(_ animated: Bool) 

我當時根本不知道這種方法的。

1

下面的代碼可能能夠完成你所需要的。

這是由導航堆棧中的更改觸發的,如果父項爲零,則表明該視圖正在被解散。

在該檢查中,您只需隱藏導航控制器。

以下代碼適用於Swift 3.0,如果需要的話可以很容易地修改Swift 2.2。

override func willMove(toParentViewController parent: UIViewController?) { 
    super.willMove(toParentViewController: parent) 

    if parent == nil { 
     navigationController?.navigationBar.isHidden = true 
    } 
} 
+0

所以我嘗試了你的方法,我有一個問題。因爲我有一個藍色的背景,即使我的酒吧是黑色的,導航欄突然變藍。所以這是一個問題。接下來的問題是,如果用戶從左邊緣向右滑動,然後向左滑動(防止發生繼續),則導航欄消失。 – Logan

相關問題