美文网首页
如何对 NavigationController 的返回按钮自定

如何对 NavigationController 的返回按钮自定

作者: chansey | 来源:发表于2015-09-26 00:02 被阅读3736次

    假设需求时这样:

    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)
    

    好了,能够灵活的运用对你来说才有意义,希望你对有所帮助。

    相关文章

      网友评论

          本文标题:如何对 NavigationController 的返回按钮自定

          本文链接:https://www.haomeiwen.com/subject/vzcwcttx.html