如何连接UINavigationBar中的按钮?

时间:2009-09-19 07:45:48

标签: xcode interface-builder uibutton uinavigationbar

我将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事件会触发。

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

2 个答案:

答案 0 :(得分:1)

打开IB,选择UIBarButtonItem并在Inspector中,转到Connections选项卡。

选择器右侧的点拖动到 AppDelegate / 文件的所有者(已定义操作的那个)和选择行动。

我想你已经尝试过了,但为了以防万一。如果操作未显示,请尝试将操作定义调整为:

- (IBAction)btnInfoClick:(id)sender;

再次尝试该过程。我知道你真的不必指定发件人(至少以编程方式,我总是使用的方式)但我有同样的问题,并在添加发件人参数后它正常工作。

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

答案 1 :(得分:0)

我认为,这是IB中的一个错误。但我找到了解决方法here。重新发布后代:

  1. 在视图中创建一个按钮(不是导航栏!)
  2. 将此按钮设为信息灯
  3. 将此按钮的操作设置为Touch Inside Up
  4. 将按钮移至导航栏