我遇到了一个简单的任务,我在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";
}
我该如何解决这个问题?
答案 0 :(得分: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";
}
答案 1 :(得分:2)
你的直接问题就在于:
_pictureNameLabel = [[UILabel alloc] init];
在-ViewDidLoad
。它正在创建一个 new 变量,并且pictureNameLabel
属性指向它,导致您丢失对Interface Builder中创建的引用的引用。删除该行,一切都应该正常。
如果您通过Interface Builder创建了一个元素,则无需分配&自己初始化,并将其添加到适当位置的视图中,因为它会自动为您完成,并且属性已设置为指向它。如果您手动创建新视图,则需要执行此操作...但您还需要将其作为子视图添加到视图层次结构中的某个位置。
与您的问题无关,但您还创建了一个名为UILabel *pictureNameLabel;
的变量。我假设您创建了此变量作为合成属性pictureNameLabel
的支持变量...但是,您将其合成为_pictureNameLabel
,这意味着您现在有两个变量_pictureNameLabel
和pictureNameLabel
。这几乎肯定是一个错误。您应该删除pictureNameLabel
的手动定义,或者如果您确实打算将其与具有相同名称的属性分开使用,则将其重命名为不同的名称。拥有它可能只会导致混乱和在路上瞎扯。
答案 2 :(得分:-1)
您的标签已存在于您的xib文件中,您可以在界面bulider上设置textcolor,text。