我的 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 中使用它?
在Linux中插上U盘,是怎么识别和挂载U盘的,Linux底层里发生了啥变化!急急急!