我试图弹回到导航控制器下的第一个视图控制器,而不是返回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 :(得分:0)
请勿更改后退按钮的功能。当你尝试这样做时,你只需打破后退按钮。您可以自定义后退按钮的外观,但无法更改其操作。您必须提供一个零动作和目标,以便后退按钮仍可用作后退按钮。
要自定义后退按钮的行为,请更改导航控制器本身的行为。为导航控制器提供委托并实施navigationController:didShowViewController:animated:
。在您的实施中,看看我们如何到达这里。如果我们到达这里因为我们弹出它,进一步弹出(到根)。