无法将条形按钮链接到超类中的@IBAction

时间:2015-04-07 14:08:00

标签: ios swift inheritance uistoryboard ibaction

我有许多视图控制器,每个视图控制器都有自己的菜单按钮(UIBarButton,添加在故事板中)。现在我想将所有这些链接到它们的超类中的单个@IBAction函数(对于具有该menubutton的所有视图控制器,超类是相同的。)

现在我之前已将@IBOutlet链接到超类,但它似乎与@IBAction无关,即使该函数不是私有的,它也是如此肯定是超类的一部分(我正在重构,以前在每个类中都是@IBAction,它只执行menuButtonTap()(调用超类中的方法)。

有什么想法吗?

4 个答案:

答案 0 :(得分:3)

我通过在超类上手动创建@IBAction并给出它们与我在子类中创建的名称相同的名称来解决问题。然后我删除了子类中的那些。这留下了一个悬垂的参考资料。根据Xcode的说法,从故事板开始,但我知道它就在那里。

答案 1 :(得分:1)

尽管从XCode 9.4开始,对于通用UIViewController来说,它仍然不起作用(但您的解决方法仍然有效),但请注意,它对于情节提要中的UITableViewCell模板可以正常工作。

如果情节提要中的某些模板单元共享包含@IBOutlet属性的相同基类,则可以像平常一样将它们链接到每个模板单元实例:

Link @IBOutlet from parent class to storyboard prototype cell component

然后XCode将显示一个弹出窗口,告诉您链接在哪个原型单元中被“支持”:

Select "backing" prototype cell

我不确定为什么第二步是必要的,因为您是从 内的给定原型单元中指定特定组件的

答案 2 :(得分:0)

您可以像在从子视图类向UITabbar按钮添加操作时那样执行此操作。

假设btn是UIBarButtonItem,

[btn setTarget:self.superview];

[btn setAction:@selector(menuButtonTap:)] 

答案 3 :(得分:0)

您是否有机会使用__unused关键字?如果你这样做,IBAction不会出现在故事​​板中(我正在使用Xcode 6.3.2)

- (IBAction)actionBack:(__unused id)sender;
vs
- (IBAction)actionBack:(id)sender;

要显示并选择删除__unsused关键字。