Xcode 如何在UINavigationBar中连接按钮?

Xcode 如何在UINavigationBar中连接按钮?,xcode,interface-builder,uibutton,uinavigationbar,Xcode,Interface Builder,Uibutton,Uinavigationbar,我将UINavigationBar放在XIB表单上。然后我在表单上删除了一个ui按钮(而不是ui导航栏)。我将类型更改为InfoLight(使其看起来像一个信息符号) 然后我将ui按钮拖到UINavigationBar上,并将其设置为右按钮。由于拖动,它神奇地将类型从UIButton更改为UIButtonBarItem 为什么我不先把ui按钮拖到ui导航栏上?因为,一旦按钮出现,Interface Builder将不允许您出于任何原因将类型更改为InfoLight 在相邻的.h文件中,我为iAc

我将
UINavigationBar
放在XIB表单上。然后我在表单上删除了一个
ui按钮
(而不是
ui导航栏
)。我将类型更改为
InfoLight
(使其看起来像一个信息符号)

然后我将ui按钮拖到
UINavigationBar
上,并将其设置为右按钮。由于拖动,它神奇地将类型从
UIButton
更改为
UIButtonBarItem

为什么我不先把
ui按钮
拖到
ui导航栏上
?因为,一旦按钮出现,Interface Builder将不允许您出于任何原因将类型更改为
InfoLight

在相邻的.h文件中,我为
iAction

- (IBAction) btnInfoClick; 
然后在.m文件中,我编写了实现:

- (IBAction) btnInfoClick {
    // kick off the about screen
    // code follows
}
现在如何将导航栏上的按钮连接到我的btnInfoClick功能

还是我一开始就走错了路

我应该注意,如果我只是简单地将一个按钮从库直接拖到导航栏上,我可以单击文件所有者图标,然后将btnInfoClick
iAction
拖到按钮上。在这种情况下,单击事件将正常触发


但是,在我首先将按钮拖到其他位置,然后拖到导航栏上的场景中,事件永远不会触发。不确定我做错了什么。

打开IB,选择UIBarButtonItem,然后在Inspector中,转到Connections选项卡

从选择器右侧的点拖动到AppDelegate/文件的所有者(已定义操作的所有者)并选择操作

我想你已经试过了,不过以防万一。当动作未显示时,请尝试调整动作定义,使其类似于:

- (IBAction)btnInfoClick:(id)sender;
然后再试一次。我知道您实际上不必指定发送者(至少是以编程方式,我一直使用的方式),但我遇到了同样的问题,在添加sender参数后,它工作正常


祝你好运,让我知道这是否有效

我想,这是IB中的一个bug。但我找到了一个解决方法。为子孙后代转载:

  • 在视图中创建一个按钮(不是导航栏!)
  • 将此按钮设置为信息灯
  • 将此按钮的操作设置为向内触碰
  • 将按钮移动到导航栏