objective-c - 我在 xib 中的 UIButtons 是怎么回事?

标签 objective-c ios cocoa-touch

我有一组 UIButton(在 xib 中定义),它们具有需要定期更新的标签。在这些按钮的 super View 的 View Controller 的 ViewDidLoad 方法中,我有一个针对每个按钮的更新方法:

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

当你点击一个按钮时,另一个方法运行弹出一个 UIAlertView,它反过来回调 View Controller 上的一个方法,它做与初始文本设置方法相同的事情:

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

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

现在,当我点击那个特定按钮时,它会弹出 UIAlertView,但在后台将按钮的文本更改为“test test test test”。 这一次,UIAlertView 回调执行我期望的操作并仅为该按钮设置文本。当我再次点击它时,文本将返回到“test test test test”,直到我关闭 UIAlertView,这将再次运行回调方法并将按钮文本设置为该方法应有的值。 p>

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

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

最佳答案

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

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

关于objective-c - 我在 xib 中的 UIButtons 是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7072146/

相关文章:

iphone - 获取 UIScrollView 的高度问题

ios - NSMutableDictionary isKindOfClass NSDictionary 为 false

ios - 如何从其他类设置 CLLocationManager 的属性

javascript - Phonegap 设备准备好在 iOS 中使用 Cordova 2.2.0 不触发

ios - Native View 呈现 React Native View

iphone - "Creating precompiled collator because collator is out of date"

objective-c - 在 Objective-C 中使用嵌套block : EXC_BAD_ACCESS

objective-c - 如何检查 NSProgressIndicator 当前是否处于动画状态?

ios - 从 Storyboard/xib 文件修改 UIImage renderingMode

ios - 在数组中查找日期最接近当前时间的对象