试图在超类中分配按钮的目标

时间:2015-05-07 13:10:40

标签: ios uiviewcontroller scope

我有一个我的UIViewController继承的baseVc,如果它们嵌入UINavigationBar,所有这些按钮都会在UINavigationController中具有相同的按钮。

我想要做的是设置子类中其中一个按钮的目标和动作,但是我没有运气。我怎样才能让它发挥作用?

@interface BaseVc : UIViewController  
@property (strong,nonatomic) UIBarButtonItem *actionButton;  

@end

上面是我父类的标题,在子类中:

[[super actionButton] setTarget:self];
[[super actionButton] setAction:@selector(viewMenu)];

3 个答案:

答案 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()
        }
}