自定义后退栏项目按钮

时间:2016-08-04 16:52:12

标签: ios swift

我试图弹回到导航控制器下的第一个视图控制器,而不是返回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执行此操作,但我不确定如何将<保留在标题中。

1 个答案:

答案 0 :(得分:0)

请勿更改后退按钮的功能。当你尝试这样做时,你只需打破后退按钮。您可以自定义后退按钮的外观,但无法更改其操作。您必须提供一个零动作和目标,以便后退按钮仍可用作后退按钮。

要自定义后退按钮的行为,请更改导航控制器本身的行为。为导航控制器提供委托并实施navigationController:didShowViewController:animated:。在您的实施中,看看我们如何到达这里。如果我们到达这里因为我们弹出它,进一步弹出(到根)。