UILabel文本未显示,但“text”值正在更新(在控制台中显示)

时间:2011-11-25 18:25:39

标签: ios ios5 ios-simulator uilabel uistoryboard

我在.storyboard文件中创建了一个UILabel,其中包含一些初始文本“Movie Title”。我已将UILabel连接到我的ViewController文件中定义的属性。出于某种原因,当我运行模拟器时,文本将不会显示在UI中。我看过类似的问题,但我没有看到任何有帮助的回应。

我的.h文件中有以下属性

@property (strong, nonatomic) IBOutlet UILabel * movieTitle;

它是在我的.m文件中合成的

@synthesize movieTitle;

然后我有一些代码执行以下操作:

NSLog(@"movie details title in Movie object: %@", _movie.name);
self.movieTitle = [[UILabel alloc] init];
[self.movieTitle setText:self.movie.name];
NSLog(@"movie details title in UILabel.text: %@",self.movieTitle.text);

控制台输出以下内容

movie details title in Movie object: Transformers
movie details title in UILabel.text: Transformers

3 个答案:

答案 0 :(得分:6)

确保在主线程上设置text属性。如果不这样做,它将更新值,但不会重绘标签。所有UIKit元素只能在主线程上更新。

如果您没有连接到Interface Builder中的UILabel,您只需要创建第二个IBOutlet

答案 1 :(得分:3)

如果movieTitle连接到Interface Builder UILabel;,那么您不应该创建另一个实例:

self.movieTitle = [[UILabel alloc] init];

您正在设置UILabel的文本,而不是GUI中的文本。

只需删除该行,请参阅以下内容:

NSLog(@"movie details title in Movie object: %@", _movie.name);
[self.movieTitle setText:self.movie.name];
NSLog(@"movie details title in UILabel.text: %@",self.movieTitle.text);

答案 2 :(得分:2)

这个答案可能不是你的情况,但你可能会觉得它很有帮助。

就我而言,我在登录视图控制器的底部放置了一个标签,以显示我的应用程序的版本。当我运行测试应用程序时,标签不会出现。 问题是因为虽然登录.xib文件是针对Retina 4全屏幕,但部署目标(在应用程序摘要中)是5.0,所以当应用程序运行时(在模拟器上),它实际上是iPhone 5.0模拟器运行,带有屏幕为3.5“。由于标签位于视图的底部,因此它位于3.5英寸屏幕的视野范围之外。 要解决此问题,只需更改标签的自动调整大小。

希望这有帮助。