我的UIButtons在xib中发生了什么?

我有一套UIButtons(定义在xib中),他们有标签需要定期更新。 在这些button的超级视图的视图控制器的ViewDidLoad方法中,我有一个更新方法,为每个button:

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

当你点击一个button时,另一个方法会运行,popup一个UIAlertView,然后在视图控制器上调用一个方法,这个方法与初始文本设置方法的function非常相似:

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

然而,这个代码根本不起作用,button标签的文本在任何方法中都不会被更新,它仍然是一个空白的白色button。 在xib中我没有在button上定义任何文本 – 没有意义,button文本没有意义,除非在运行时设置。 无论如何,在云雀,我决定把其中一个button的文本设置为“testingtesting”。

现在,当我点击那个特定的button,它popupUIAlertView,但在后台更改button的文本“testingtestingtesting”。 一次,UIAlertViewcallback完成了我所期望的操作,并设置了仅用于该button的文本。 当我再次击中它时,文本回到 “testingtestingtesting”,直到我解散UIAlertView,它将再次运行callback方法并将button文本设置为任何方法。

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

编辑:SVD关于setTitle的build议:ForState:解决了我的问题,谢谢。 我仍然好奇为什么在.xib中设置的标题标签显示,但只有当我有一个UIAlertViewpopup。

您可能需要使用[setTitle:forState:]设置正常和高亮(或选定)状态的button标题。

(并确保button连接到sockets,如jtbandes指出)。