我使用以下代码,并在getter方法中实例化标签:
-(UILabel *)switchUpLabel
{
if (!_switchUpLabel) _switchUpLabel = [[UILabel alloc]init];
return _switchUpLabel;
}
-(void)shouldShowSwitchupLabel:(BOOL)show
{
if (show)
{
self.switchUpLabel.text = @"";
self.switchUpLabel.font = [UIFont systemFontOfSize:30.0];
[self.switchUpLabel sizeToFit];
self.switchUpLabel.frame = CGRectMake(self.imageView.center.x-self.switchUpLabel.frame.size.width/2, 10, self.switchUpLabel.frame.size.width, self.switchUpLabel.frame.size.height);
[self.view addSubview:self.switchUpLabel];
}
else [self.switchUpLabel removeFromSuperview];
}
当我执行[self.switchUpLabel removeFromSuperview];
时,标签仍保留在屏幕上。唯一可以获得标签的方式" off"是做
self.switchUpLabel.text = @"";
一些注意事项:
1 /我尝试在add语句之后立即添加remove语句,这应该导致标签根本不显示。但是,标签确实显示并且从未被删除。
2 /我验证标签不是nil并且在两种情况下指向相同的标签(我将标签对象输出到NSLog)
3 /我将remove语句放在主队列块中,以确保它在主线程上执行。没有不同。