4

我以编程方式创建了一个UILabel并触发了一个我想隐藏相同标签的按钮。这是我的代码:

UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, 320, 100)];
nameLabel.text = @"TEXT";
nameLabel.backgroundColor = [UIColor greenColor];
nameLabel.numberOfLines = 5;
nameLabel.font = [UIFont boldSystemFontOfSize:12];
[self.view addSubview:nameLabel]; 

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"Hide" style:UIBarButtonItemStyleBordered target:self action:@selector(back)];    

- (IBAction)back{

  self.navigationItem.rightBarButtonItem=nil;

  [nameLabel setHidden: YES];  not working
   nameLabel.hidden = YES;     not working
}

我错过了什么吗?

4

3 回答 3

2

为了使按钮可以从其他方法访问,您需要将其分配给实例变量(直接或通过属性),而不是将其分配给局部变量。申报财产的正确方法是

@property(nonatomic, strong) UILabel *nameLabel;

然后您可以分配给使用

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

以后可以说

self.nameLabel.hidden = YES;

它应该可以工作。

于 2012-11-20T21:00:27.450 回答
2

这也是另一种方法

UILabel *nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, 320, 100)];
nameLabel.text = @"TEXT";
nameLabel.tag = 1001;
nameLabel.backgroundColor = [UIColor greenColor];
nameLabel.numberOfLines = 5;
nameLabel.font = [UIFont boldSystemFontOfSize:12];
[self.view addSubview:nameLabel]; 

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"Hide" style:UIBarButtonItemStyleBordered target:self action:@selector(back)];    

- (IBAction)back{

  self.navigationItem.rightBarButtonItem=nil;
   UILabel *tempLabel = (UILabel *)[self.view viewWithTag:1001];
  [tempLabel setHidden: YES];  
   tempLabel.hidden = YES;     
}
于 2012-11-21T08:15:21.667 回答
1

甚至很难知道它是如何编译的,因为您显示的要创建的代码nameLabel使其对于其中的任何方法都是本地的。尝试创建nameLabel一个属性并self.nameLabel在您引用它时使用它,无论是创建它还是触摸它的属性。

于 2012-11-20T21:00:11.753 回答