我有一个我的UIViewController
继承的baseVc,如果它们嵌入UINavigationBar
,所有这些按钮都会在UINavigationController
中具有相同的按钮。
我想要做的是设置子类中其中一个按钮的目标和动作,但是我没有运气。我怎样才能让它发挥作用?
@interface BaseVc : UIViewController
@property (strong,nonatomic) UIBarButtonItem *actionButton;
@end
上面是我父类的标题,在子类中:
[[super actionButton] setTarget:self];
[[super actionButton] setAction:@selector(viewMenu)];
答案 0 :(得分:1)
如果我理解正确,你应该做下一步:为父类中的按钮分配动作,例如-doRightMenuButtonAction,然后在子类中重写此方法并处理此动作。
答案 1 :(得分:0)
当您的子类继承自BaseVC时,它可以访问actionButton属性。所以Jjust尝试:
[self.actionButton setTarget:self];
[self.actionButton setAction:@selector(viewMenu)];
答案 2 :(得分:0)
确保您没有将按钮标记为私有。
class BaseViewController: UIViewController {
var button = UIButton.buttonWithType(UIButtonType.System) as UIButton
override func viewDidLoad() {
super.viewDidLoad()
button.frame = CGRectMake(20, 200, 200, 44)
button.setTitle("Hello World", forState: .Normal)
self.view.addSubview(button)
}
}
然后在你的子类......
class AceViewController: BaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
button.addTarget(self, action: "sayHello:", forControlEvents: .TouchUpInside)
}
func sayHello (button: UIButton) {
UIAlertView(title: "Hello", message: "World", delegate: nil, cancelButtonTitle: "Ok").show()
}
}