0

我的代码是这样的:

if (messageBox == nil) {
    messageBox = [[MessageBoxController alloc] initWithNibName:@"MessageBoxView" bundle:nil];
}
[messageBox.MessageLabel setText: someString];
[self presentModalViewController:messageBox animated:YES];

但是,第一次运行上述逻辑时(并且 messageBox 实际上是 nil 并被启动),那么新的标签文本 (someString) 将不会显示。但是,在我运行此方法的以下时间,文本将正确显示(是的,它显示了最新的“someString”。不是我上次调用该方法的实例)。

我在设置标签文本后立即尝试了 [messageBox.view setNeedsDisplay] 但这也无济于事。在 messageBox viewDidLoad 方法中,我还设置了 [self.MessageLabel setText: self.MessageLabel.text] 以防万一有一些异步初始化或你有什么。

为什么第一次调用这个方法时新的标签文字不显示?

4

1 回答 1

1

原因UILabelnot在您loaded的设置文本之前。

if (messageBox == nil) {
    messageBox = [[MessageBoxController alloc] initWithNibName:@"MessageBoxView" bundle:nil];
}
[self presentModalViewController:messageBox animated:YES];
//make changes to UI after providing viewcontroller
[messageBox.MessageLabel setText: someString];
于 2012-11-01T06:09:59.913 回答