如何对NavigationController的返回按钮自定义

如何对NavigationController的返回按钮自定义,第1张

假设需求时这样:

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)

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

文/chansey(简书作者)

原文链接:http://www.jianshu.com/p/b2458404834f

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

1.在initWithNibName:bundle:方法中设置self.title=@"A"2.在ViewDidLoad方法中设置self.navigationController.title=@“B"代码例子:-(id)initWithNibName:(NSString*)nibNameOrNilbundle:(NSBundle*)nibBundleOrNil{self=[superin


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11646036.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存