如何为在 class 方法中创建的对象创建 IBAction

How to create IBAction for object created in class method

+(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
}

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

这里的 viewController 是我想以编程方式填充我的 "settingsButton" 的一个。 "settingsButtonForController" 在我制作的 UIGenerator class 中

viewController中定义doSettings:并使其成为public。 在创建按钮时:

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

我假设这个 viewController 可能是您项目中继承自 UIViewController 的不同视图控制器。 您应该在调用此静态方法的 UIViewController 的所有子类中定义 doSettings: