如何为类方法

时间:2016-01-17 18:58:05

标签: ios objective-c class uibarbuttonitem ibaction

+(UIBarButtonItem*) settingsButtonForController:(UIViewController*) viewController{
    UIBarButtonItem* settingsButton = [UIBarButtonItem alloc] initWithTitle@"Settings"
        style:UIBarButtonItemStyleBordered
        target:self
        action:@selector(doSettings:)];
    //...customize appearance of button
    return settingsButton;
}

-(IBAction) doSettings:(id)sender{
    //...the functionality for the settings button
}

我正在尝试为我在类方法中创建的按钮创建一个动作,但Xcode告诉我,操作需要是实例方法。这是否可以通过一些修改,或者我是否必须让我的按钮生成方法成为实例方法?

这里的viewController是我想用编程方式填充“settingsButton”的那个。 “settingsButtonForController”在我创建的UIGenerator类中

1 个答案:

答案 0 :(得分:3)

doSettings:中定义viewController并将其公开。 并在创建按钮时:

 UIBarButtonItem* settingsButton = [UIBarButtonItem alloc] initWithTitle@"Settings"
        style:UIBarButtonItemStyleBordered
        target:viewController
        action:@selector(doSettings:)];

我认为这个viewController可能是您继承的UIViewController项目中的不同视图控制器。 您应该在doSettings:的所有子类中定义UIViewController,并将其称为静态方法。