Ios 仅设置一次导航后退按钮(leftBarButtonItem)
我试图在几乎每个页面中设置一个自定义的后退按钮,并在每个页面中重复相同的代码,如下所示Ios 仅设置一次导航后退按钮(leftBarButtonItem),ios,swift,uinavigationcontroller,uinavigationbar,Ios,Swift,Uinavigationcontroller,Uinavigationbar,我试图在几乎每个页面中设置一个自定义的后退按钮,并在每个页面中重复相同的代码,如下所示 let buttonItem = UIBarButtonItem(image: UIImage(named: "arrow_back"), style: UIBarButtonItemStyle.Plain, target: self, action:"popBack") buttonItem.tintColor=UIColor.blackColor() navigationItem.leftBarButto
let buttonItem = UIBarButtonItem(image: UIImage(named: "arrow_back"), style: UIBarButtonItemStyle.Plain, target: self, action:"popBack")
buttonItem.tintColor=UIColor.blackColor()
navigationItem.leftBarButtonItem = backButtonItem()
我认为这是错误的方式。那么,您能告诉我什么是最好的方法吗?我通过在UIViewController上创建一个类别来实现这一点。在该文件中,我创建了一个名为addBackButton的方法,您可以将代码放入其中一次,然后在.h文件中公开该方法。然后,在任何视图控制器子类中,都可以导入类别并调用[self-addBackButton] 我通过在UIViewController上创建一个类别来实现这一点。在该文件中,我创建了一个名为addBackButton的方法,您可以将代码放入其中一次,然后在.h文件中公开该方法。然后,在任何视图控制器子类中,都可以导入类别并调用[self-addBackButton] 我建议您创建一个自定义UIButton类,并在每次需要时重用它
class backButtonItem: UIBarButtonItem {
convenience init(target: AnyObject?) {
self.init(image: UIImage(named: "arrow_back"), style: .Plain, target: target, action: "popBack")
self.tintColor = UIColor.blackColor()
}}
使用时只需键入以下脚本:
navigationItem.leftBarButtonItem = backButtonItem(target: self)
我建议您创建一个自定义UIButton类,并在每次需要时重用它
class backButtonItem: UIBarButtonItem {
convenience init(target: AnyObject?) {
self.init(image: UIImage(named: "arrow_back"), style: .Plain, target: target, action: "popBack")
self.tintColor = UIColor.blackColor()
}}
使用时只需键入以下脚本:
navigationItem.leftBarButtonItem = backButtonItem(target: self)
这里有多种选择 1)UIViewController扩展
extension UIViewController {
func brandedBackButton() {
let buttonItem = UIBarButtonItem(image: UIImage(named: "back"), style: UIBarButtonItemStyle.Plain, target: self, action:"popBack")
buttonItem.tintColor=UIColor.blackColor()
navigationItem.leftBarButtonItem = buttonItem
}
}
然后只需调用视图控制器
override func viewDidLoad() {
super.viewDidLoad()
brandedBackButton()
}
2)基本视图控制器类
您基本上会在控制器和UIViewController之间放置一个类
class BaseViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let buttonItem = UIBarButtonItem(image: UIImage(named: "back"), style: UIBarButtonItemStyle.Plain, target: self, action:"popBack")
buttonItem.tintColor=UIColor.blackColor()
navigationItem.leftBarButtonItem = buttonItem
}
}
class YourWhateverViewController: BaseViewController {
//implementation here....
然后您将继承此BaseViewController,而不是标准UIViewController
class BaseViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let buttonItem = UIBarButtonItem(image: UIImage(named: "back"), style: UIBarButtonItemStyle.Plain, target: self, action:"popBack")
buttonItem.tintColor=UIColor.blackColor()
navigationItem.leftBarButtonItem = buttonItem
}
}
class YourWhateverViewController: BaseViewController {
//implementation here....
}
category和基类也可以容纳popBack自定义方法,因此您最终将真正拥有10个字符,从而在任何地方都可以获得这种行为…您在这里有各种选择 1)UIViewController扩展
extension UIViewController {
func brandedBackButton() {
let buttonItem = UIBarButtonItem(image: UIImage(named: "back"), style: UIBarButtonItemStyle.Plain, target: self, action:"popBack")
buttonItem.tintColor=UIColor.blackColor()
navigationItem.leftBarButtonItem = buttonItem
}
}
然后只需调用视图控制器
override func viewDidLoad() {
super.viewDidLoad()
brandedBackButton()
}
2)基本视图控制器类
您基本上会在控制器和UIViewController之间放置一个类
class BaseViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let buttonItem = UIBarButtonItem(image: UIImage(named: "back"), style: UIBarButtonItemStyle.Plain, target: self, action:"popBack")
buttonItem.tintColor=UIColor.blackColor()
navigationItem.leftBarButtonItem = buttonItem
}
}
class YourWhateverViewController: BaseViewController {
//implementation here....
然后您将继承此BaseViewController,而不是标准UIViewController
class BaseViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let buttonItem = UIBarButtonItem(image: UIImage(named: "back"), style: UIBarButtonItemStyle.Plain, target: self, action:"popBack")
buttonItem.tintColor=UIColor.blackColor()
navigationItem.leftBarButtonItem = buttonItem
}
}
class YourWhateverViewController: BaseViewController {
//implementation here....
}
category和基类都可以容纳popBack自定义方法,因此您最终可以在任何地方使用10个字符来实现此行为…通过文件->新建->文件->创建一个类别,然后在iOS Source下选择Objective-C文件并点击Next,然后在“文件类型”中选择“类别”,对于“类别”,选择“UIViewController”通过进入“文件->新建->文件->创建类别,然后在“iOS源”下选择“目标-C文件”并点击“下一步”,然后在“文件类型”中选择“类别”,对于“类别”,选择“UIViewController”