6

我在我的 .storyboard 文件中创建了一个 UILabel,其中包含一些初始文本“电影标题”。我已将该 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
4

3 回答 3

7

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

UILabel此外,如果您没有连接到IBOutletInterface Builder,您只需要创建第二个。

于 2011-11-25T18:31:56.377 回答
3

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

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

您正在UILabelGUI 中设置 not the one 的文本。

只需删除该行,请参见下文:

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);
于 2011-11-25T18:29:38.077 回答
2

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

在我的例子中,我在登录视图控制器的底部放了一个标签来显示我的应用程序的版本。当我运行测试应用程序时,标签没有出现。问题是,虽然登录 .xib 文件是针对 Retina 4 Full Screen 的,但 Deployment Target(在 App Summary 中)是 5.0,所以当应用程序运行时(在模拟器上),它实际上是在运行 iPhone 5.0 模拟器,带有3.5" 的屏幕。由于标签位于视图的底部,因此它不在 3.5" 屏幕的视野范围内。要解决此问题,只需更改标签的自动调整大小。

希望这可以帮助。

于 2013-02-01T05:09:15.347 回答