0

我被困在一个简单的任务上,我的 uiviewcontroller 的界面文件上有 uilabel。我想通过一些方法更新该标签。它不会更新标签。

在此处输入图像描述

.h
UIViewController
{
  UILabel *pictureNameLabel;
}
@property (nonatomic, strong) IBOutlet UILabel *pictureNameLabel;

.m
@synthesize pictureNameLabel=_pictureNameLabel;
- (void)viewDidLoad
{
        _pictureNameLabel = [[UILabel alloc] init];
        _pictureNameLabel.textColor=[UIColor blackColor];
        _pictureNameLabel.text=@"Try";
}

我该如何解决这个问题?

4

3 回答 3

3

您不需要分配标签。它已经活着,并且从笔尖中醒来。

.h
UIViewController
{
  //UILabel *pictureNameLabel;
}
@property (nonatomic, strong) IBOutlet UILabel *pictureNameLabel;

.m
@synthesize pictureNameLabel=_pictureNameLabel;
- (void)viewDidLoad
{
        //_pictureNameLabel = [[UILabel alloc] init];
        _pictureNameLabel.textColor=[UIColor blackColor];
        _pictureNameLabel.text=@"Try";
}
于 2013-01-16T14:47:04.640 回答
2

你的直接问题是这条线:

_pictureNameLabel = [[UILabel alloc] init];

-ViewDidLoad. 它正在创建一个变量,并让pictureNameLabel属性指向它,导致您失去对在 Interface Builder 中创建的变量的引用。删除该行,一切都应该正常工作。

如果您通过 Interface Builder 创建了一个元素,则不需要自己分配和初始化它,并将其添加到适当位置的视图中,因为它会自动为您完成,并且属性已经设置为指向它。如果您要手动创建新视图,则确实需要这样做......但您还需要将其添加到视图层次结构中的某个位置作为子视图。

与您的问题无关,但您还创建了一个名为UILabel *pictureNameLabel;. 我假设您创建了这个变量作为合成属性的支持变量pictureNameLabel......但是,您将它合成为_pictureNameLabel,这意味着您现在有两个变量_pictureNameLabelpictureNameLabel。这几乎可以肯定是一个错误。pictureNameLabel如果您实际上打算将其与具有相同名称的属性分开使用,则应该删除 的手动定义,或者将其重命名为不同的名称。拥有它可能只会导致混乱和错误。

于 2013-01-16T15:03:38.467 回答
-1

您的标签已经存在于您的 xib 文件中,您可以设置 textcolor,interface bulider 上的文本。

于 2013-01-16T14:50:00.463 回答