我有一组UIButtons(在xib中定义),它们的标签需要定期更新。在这些按钮的superview的视图控制器的ViewDidLoad方法中,我有一个更新方法,对于每个按钮都有:
button.titleLabel.text = @"Relevant Text";
[button setNeedsDisplay];
当你点击一个按钮时,会运行另一个弹出UIAlertView的方法,后者又会在视图控制器上回调一个与初始文本设置方法大致相同的方法:
button.titleLabel.text = @"New Text";
[button setNeedsDisplay];
然而,这段代码根本不起作用,按钮标签的文本在任何一种方法中都没有更新,它仍然是一个空白的白色按钮。在xib中我没有在按钮上定义任何文本 - 没有意义,按钮文本没有意义,除非它在运行时设置。无论如何,在百灵鸟上,我决定将其中一个按钮的文本设置为“测试测试”。
现在,当我点击该特定按钮时,它会弹出UIAlertView,但在后台将按钮文本更改为“测试测试测试”。并且这个时间,UIAlertView回调执行我期望的操作,并仅为该按钮设置文本。当我再次点击它时,文本返回到“测试测试测试”,直到我关闭UIAlertView,它再次运行回调方法并将按钮文本设置为方法应该的任何内容。
我不知道这里发生了什么,或者为什么最初在xib中设置文本与我是否可以以编程方式设置该文本有任何关系。显然这不是我想要的行为,我想知道如何确保按钮上的文字设置。
编辑:SVD关于setTitle的建议:ForState:解决了我的问题,谢谢。我仍然很好奇为什么.xib中设置的标题标签出现了,但只有当我弹出UIAlertView时才会出现。
答案 0 :(得分:2)
您可能需要使用[setTitle:forState:]为正常和突出显示(或选中)状态设置按钮标题。
(确保按钮连接到插座,正如jtbandes指出的那样)。