我有许多视图控制器,每个视图控制器都有自己的菜单按钮(UIBarButton
,添加在故事板中)。现在我想将所有这些链接到它们的超类中的单个@IBAction
函数(对于具有该menubutton的所有视图控制器,超类是相同的。)
现在我之前已将@IBOutlet
链接到超类,但它似乎与@IBAction
无关,即使该函数不是私有的,它也是如此肯定是超类的一部分(我正在重构,以前在每个类中都是@IBAction
,它只执行menuButtonTap()
(调用超类中的方法)。
有什么想法吗?
答案 0 :(得分:3)
我通过在超类上手动创建@IBAction
并给出它们与我在子类中创建的名称相同的名称来解决问题。然后我删除了子类中的那些。这留下了一个悬垂的参考资料。根据Xcode的说法,从故事板开始,但我知道它就在那里。
答案 1 :(得分:1)
尽管从XCode 9.4开始,对于通用UIViewController
来说,它仍然不起作用(但您的解决方法仍然有效),但请注意,它对于情节提要中的UITableViewCell
模板可以正常工作。
如果情节提要中的某些模板单元共享包含@IBOutlet
属性的相同基类,则可以像平常一样将它们链接到每个模板单元实例:
然后XCode将显示一个弹出窗口,告诉您链接在哪个原型单元中被“支持”:
我不确定为什么第二步是必要的,因为您是从 内的给定原型单元中指定特定组件的
答案 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关键字。