2016-08-04 104 views
0

而不是回去1視圖控制器,我試圖回彈到導航控制器下的第一個視圖控制器。自定義背欄項目按鈕

func setupBackBarButtons() { 

    let myBackButton = UIButton() 
    myBackButton.addTarget(self, action: #selector(presentListController), forControlEvents: .TouchUpInside) 
    let myCustomBackButtonItem = UIBarButtonItem(customView: myBackButton) 

    self.navigationItem.backBarButtonItem = myCustomBackButtonItem // This works 
    self.navigationItem.leftBarButtonItem = myCustomBackButtonItem // This doesn't. 

} 

func presentListController() { 
    navigationController?.popToViewController((self.navigationController?.viewControllers[0])!, animated: true) 
} 

我稍微感到困惑,爲什麼我可以添加自定義按鈕,leftBarButtonItem但不是backBarButtonItem

我只想添加一個目標,將其彈回到第一個視圖控制器,但不能更改標題(仍保留在角落裏的<)。我會這樣做的leftBarButtonItem,但我不知道如何保持標題<

+0

你可以添加一個圖像(<)爲self.navigationItem.leftBarButtonItem知道嗎? – RashmiG

回答

0

不要更改後退按鈕的功能。當你試圖做到這一點時,你只需打破後退按鈕。您可以自定義後退按鈕的外觀,但不能更改其操作。您必須提供零操作和目標,以便後退按鈕仍可用作後退按鈕。

要自定義後退按鈕的行爲,請更改導航控制器本身的行爲。給導航控制器一個代表並執行navigationController:didShowViewController:animated:。在你的實施中,看看我們是如何到達這裏的。如果我們到達這裏,因爲我們彈出來,進一步彈出(到根)。

+0

當你說'打破後退按鈕',這實際上是一件壞事嗎?我這種情況下,我會說我不需要後退按鈕。不確定你的意思是'給導航控制器一個委託並實現navigationController:didShowViewController:animated:'既不。它是obj-c嗎? – luke

+0

「在這種情況下,我會說我不需要後退按鈕」當然,那麼不要使用它。 _你是那個說你需要後退按鈕的人(這是指向後面的V形符號)。你說過「(仍然保持它與背景中的」<「一樣)」。這是後退按鈕。 – matt

+0

對不起,我的意思是我不需要什麼後退按鈕(彈出1視圖控制器)。儘管如此,我希望顯示後退按鈕並彈出到根視圖控制器,而不僅僅是1個vc。我想我要求的是一個自定義欄按鈕項目也顯示反向指示人字形符號。那可能嗎? – luke