我在.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
答案 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英寸屏幕的视野范围之外。 要解决此问题,只需更改标签的自动调整大小。
希望这有帮助。