0

UINavigationBar在XIB表格上放了一个。然后我UIButton在表格上放了一个(不是在UINavigationBar)上。我将类型更改为InfoLight(使其看起来像一个信息符号)。

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

为什么我不直接将 拖到UIButton开始UINavigationBarInfoLight因为,一旦按钮出现,无论出于何种原因,Interface Builder 都不允许您将类型更改为。

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

- (IBAction) btnInfoClick; 

然后在 .m 文件中,我编写了实现:

- (IBAction) btnInfoClick {
    // kick off the about screen
    // code follows
}

我现在如何将导航栏上的按钮连接到我的 btnInfoClick 函数?

还是我一开始就走错了路?

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

但是,在我首先将按钮拖到其他地方然后拖到导航栏上的情况下,该事件永远不会触发。不知道我做错了什么。

4

2 回答 2

1

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

从选择器右侧的点拖动到您的AppDelegate / File's Owner(已定义操作的位置)并选择操作。

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

- (IBAction)btnInfoClick:(id)sender;

并再次尝试该过程。我知道您实际上不必指定发件人(至少以编程方式,我一直使用的方式),但是我遇到了同样的问题,并且在添加了发件人参数后它可以正常工作。

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

于 2009-09-19T08:33:17.927 回答
0

我认为,这是IB中的一个错误。但我在这里找到了解决方法。转发给后人:

  1. 在视图中创建一个按钮(不是导航栏!)
  2. 将此按钮设置为信息灯
  3. 将此按钮的操作设置为 Touch Inside Up
  4. 将按钮移动到导航栏
于 2009-09-19T08:47:56.243 回答