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 に答える