假设需求时这样:
NavigationController下有2个视图,从A视图会Push到B视图,默认情况下,当显示视图B时,视图B的导航bar上会出现返回按钮,按钮标题文字默认为A视图的title,通常你也许会想自定义返回按钮的标题文字,也许你还想自定义处理点击返回按钮的业务逻辑。
那么,你可以通过下面的方式来实现(这里用的是Swift的实现方式):
方式1
在B视图的viewDidLoad
中设置给NavigationController设置一个新的左边bar,添加一个处理点击返回按钮的方法
override func viewDidLoad {
super.viewDidLoad()
self.navigationItem.hidesBackButton = true
let newBackButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "back:")
self.navigationItem.leftBarButtonItem = newBackButton;
}
func back(sender: UIBarButtonItem) {
// Perform your custom actions
// ...
// Go back to the previous ViewController
self.navigationController?.popViewControllerAnimated(true)
}
方式2
这种方式主要展现如何添加点击后自定义业务逻辑,在B视图的viewWillDisappear
中添加如下代码:
override func viewWillDisappear(animated : Bool) {
super.viewWillDisappear(animated)
if (self.isMovingFromParentViewController()){
// Perform your custom actions
}
}
这种方式利用视图变化状态来判断是否点击了返回按钮
以上2种方式都比容交易实现,方式1不仅包含自定返回按钮文字,而且能够添加自定义返回处理逻辑,而方式2中如果你需要修改标题还需要额外的实现,比如你可以在A视图的viewDidLoad
方法中加入下面的代码:
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "返回", style: UIBarButtonItemStyle.Plain, target: nil, action: nil)
好了,能够灵活的运用对你来说才有意义,希望你对有所帮助。
网友评论