我的 UIButton 在 xib 中发生了啥?

Posted

技术标签:

【中文标题】我的 UIButton 在 xib 中发生了啥?【英文标题】:What's going on with my UIButtons in a xib?我的 UIButton 在 xib 中发生了什么? 【发布时间】:2011-08-15 23:58:40 【问题描述】:

我有一组 UIButtons(在 xib 中定义),它们的标签需要定期更新。在这些按钮的超级视图的视图控制器的 ViewDidLoad 方法中,我有一个更新方法,对于每个按钮:

button.titleLabel.text = @"Relevant Text";
[button setNeedsDisplay];

当你点击一个按钮时,另一个方法会运行,它会弹出一个 UIAlertView,这反过来又会回调视图控制器上的一个方法,该方法与初始文本设置方法的作用大致相同:

button.titleLabel.text = @"New Text";
[button setNeedsDisplay];

然而,这段代码根本不起作用,按钮标签的文本在任何一种方法中都没有得到更新,它仍然是一个空白的白色按钮。在 xib 中,我没有在按钮上定义任何文本 - 没有意义,按钮文本没有意义,除非它是在运行时设置的。无论如何,我决定将其中一个按钮的文本设置为“测试测试测试”。

现在,当我点击该特定按钮时,它会弹出 UIAlertView 但在后台将按钮的文本更改为“测试测试测试测试”。 这个时间,UIAlertView 回调会按照我的预期进行,并仅为该按钮设置文本。当我再次点击它时,文本会返回到“test test test”,直到我关闭 UIAlertView,它会再次运行回调方法并将按钮文本设置为该方法应有的任何内容。 p>

我不知道这里发生了什么,或者为什么最初在 xib 中设置文本与我以后是否可以通过编程方式设置该文本有任何关系。显然这不是我想要的行为,我想知道如何确定在按钮上设置文本。

编辑:SVD 关于 setTitle:ForState 的建议:解决了我的问题,谢谢。我仍然很好奇为什么 .xib 中设置的标题标签会出现,但只有当我弹出 UIAlertView 时才会出现。

【问题讨论】:

您的按钮是否有实际连接的插座?你确定它不是 nil 吗? 【参考方案1】:

您可能需要使用 [setTitle: forState:] 将按钮标题设置为正常和突出显示(或选中)状态。

(请确保按钮已连接到插座,正如 jtbandes 指出的那样)。

【讨论】:

我遇到了完全相同的问题,使用 [setTitle: forState] 方法设置正确。

以上是关于我的 UIButton 在 xib 中发生了啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在代码中创建自定义 UIButton 并在 xib 中使用它?

单击时更改 UIButton 文本

在Linux中插上U盘,是怎么识别和挂载U盘的,Linux底层里发生了啥变化!急急急!

如何防止 UIButton 在触摸时发生变化?

属性标题未在 xib 文件的 UIButton 中加载自定义字体

在从 XIB 加载的自定义视图中修改 UIButton 的标题标签