iPhone:我可以将类方法用于 UIBarButtonItem 的操作选择器吗?

Posted

技术标签:

【中文标题】iPhone:我可以将类方法用于 UIBarButtonItem 的操作选择器吗?【英文标题】:iPhone: Can I use class method for action selector of UIBarButtonItem? 【发布时间】:2012-06-07 10:50:22 【问题描述】:

我想使用类方法来选择 UIBarButtonItem 的动作。

代码是:

[[UIBarButtonItem alloc] 
    initWithTitle:@"title"                                            
    style:UIBarButtonItemStylePlain
    target: self
    action:@selector(method)]

当我使用实例方法进行操作时,它可以工作。

但是当我使用类方法进行操作时,当我点击按钮时会发生错误。 错误信息是:unrecognized selector sent to instance

我不能为此使用类方法吗? 如何设置使用目标而不是自我?

【问题讨论】:

使用 [self 类] 而不是 self。您混淆了类方法和实例方法。 不行,navigationbarbutton item 是导航栏的即时对象,只能关联即时方法。 【参考方案1】:

请改成下面的代码:这里的target应该是self而不是[self class]

[[UIBarButtonItem alloc] initWithTitle:@"title"
                                 style:UIBarButtonItemStylePlain
                                target:self
                                action:@selector(method)];

【讨论】:

不客气,如果有帮助,请不要忘记投票和/或接受答案:)【参考方案2】:

是的,你可以通过

[[UIBarButtonItem alloc] initWithTitle:@"title" style:UIBarButtonItemStylePlain target: self
    action:@selector(method)];

- (void)method

    // here call class method

   [YourClassName methodName];

【讨论】:

【参考方案3】:

是的,您必须使用实例方法。只需从您的方法中调用您的类方法。

【讨论】:

以上是关于iPhone:我可以将类方法用于 UIBarButtonItem 的操作选择器吗?的主要内容,如果未能解决你的问题,请参考以下文章

有啥方法可以将类添加到 bootstrap_django form_fields?

用于计算 iPhone 上方法调用次数的工具

用于 OpenCV 的 Iphone 6 相机校准

c ++如何将类初始化器用于非默认构造的类

c++ 将类成员推送到向量的正确方法

是否可以将类用作自己方法的返回类型