我将UINavigationBar
放到了XIB表单上。然后我在表单上删除了UIButton
(而不是UINavigationBar
)。我将类型更改为InfoLight
(因此它看起来像一个Info符号)。
然后我将UIButton拖到UINavigationBar
上并将其设置为右键。由于拖动,它会将类型从UIButton
神奇地更改为UIButtonBarItem
。
为什么我不将UIButton
拖到UINavigationBar
开始?因为,一旦按钮出现,Interface Builder就不会让您因任何原因将类型更改为InfoLight
。
在相邻的.h文件中,我为IBAction
- (IBAction) btnInfoClick;
然后在.m文件中,我编写了实现:
- (IBAction) btnInfoClick {
// kick off the about screen
// code follows
}
我现在如何将导航栏上的按钮连接到我的btnInfoClick功能?
或者我是否以错误的方式开始?
我应该注意,如果我只是将图书馆中的按钮直接拖到导航栏上,我可以单击“文件所有者”图标,然后将btnInfoClick IBAction
拖到按钮上。在这种情况下,click事件会触发。
但是,在我首先将按钮拖到其他位置然后再拖到导航栏上的情况下,事件永远不会触发。不确定我做错了什么。
答案 0 :(得分:1)
打开IB,选择UIBarButtonItem并在Inspector中,转到Connections选项卡。
从选择器右侧的点拖动到 AppDelegate / 文件的所有者(已定义操作的那个)和选择行动。
我想你已经尝试过了,但为了以防万一。如果操作未显示,请尝试将操作定义调整为:
- (IBAction)btnInfoClick:(id)sender;
再次尝试该过程。我知道你真的不必指定发件人(至少以编程方式,我总是使用的方式)但我有同样的问题,并在添加发件人参数后它正常工作。
祝你好运,让我知道这是否有效!
答案 1 :(得分:0)
我认为,这是IB中的一个错误。但我找到了解决方法here。重新发布后代: