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

use*_*103 5 uilabel ios ios-simulator ios5 uistoryboard

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

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

@property (strong, nonatomic) IBOutlet UILabel * movieTitle;
Run Code Online (Sandbox Code Playgroud)

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

@synthesize movieTitle;
Run Code Online (Sandbox Code Playgroud)

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

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);
Run Code Online (Sandbox Code Playgroud)

控制台输出以下内容

movie details title in Movie object: Transformers
movie details title in UILabel.text: Transformers
Run Code Online (Sandbox Code Playgroud)

DHa*_*ick 6

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

UILabel如果您没有连接到IBOutletInterface Builder中,也只需要创建第二个.


zap*_*aph 3

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

self.movieTitle = [[UILabel alloc] init];
Run Code Online (Sandbox Code Playgroud)

您正在设置的文本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);
Run Code Online (Sandbox Code Playgroud)