如何对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)
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)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询