我正在尝试在每个页面中设置一个自定义后退按钮,我在每个页面中重复相同的代码,如下所示;
let buttonItem = UIBarButtonItem(image: UIImage(named: "arrow_back"), style: UIBarButtonItemStyle.Plain, target: self, action:"popBack")
buttonItem.tintColor=UIColor.blackColor()
navigationItem.leftBarButtonItem = backButtonItem()
我认为这是错误的方式。那么请你能说出最好的方法是什么?
答案 0 :(得分:2)
我通过在UIViewController上创建一个类别来完成此操作。在该文件中,我创建了一个名为addBackButton的方法,您可以将代码放入一次,然后在.h文件中公开该方法。然后在任何视图控制器子类中,您可以导入类别并调用[self addBackButton];
答案 1 :(得分:1)
我建议您创建一个自定义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)
答案 2 :(得分:1)
这里有各种选择。
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
}
}
然后你将继承这个BaseViewController而不是标准的UIViewController。
class YourWhateverViewController: BaseViewController {
//implementation here....
}
类别和基类都可以容纳popBack自定义方法,所以你最终会真正使用10个字符来获得这种行为......