作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个按钮,当按下它时应该隐藏状态栏并在其位置放置文本。然后,当按下按钮时,标签应该从 view
中删除,状态栏将重新出现。第一部分有效——状态栏被隐藏,标签被放置在 view
上,问题是当我第二次按下按钮时(删除文本并放回状态栏) .状态栏重新出现,但标签没有从 view
中删除。为此,我使用了 if 语句。我也在使用 removeObjectFromSuperView,这是行不通的。
代码如下:
- (IBAction)buttonPressed:(id)sender {
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 320, 21)];
label.text = @"This is a test";
[label setFont:[UIFont systemFontOfSize:13]];
label.textAlignment = NSTextAlignmentCenter;
if (hidden == NO) {
[UIApplication sharedApplication].statusBarHidden = YES;
[self.view addSubview:label];
hidden = YES;
}else if (hidden == YES) {
[UIApplication sharedApplication].statusBarHidden = NO;
[label removeFromSuperview];
hidden = NO;
}
}
谢谢编辑:问题如下:
最佳答案
您需要在 buttonPressed:
方法之外跟踪您的标签。现在,您每次按下按钮时都会创建一个新标签,然后删除相同的标签。
例如:
@interface MyViewController () {
UILabel *label;
}
- (IBAction)buttonPressed:(id)sender {
if (hidden == NO) {
[UIApplication sharedApplication].statusBarHidden = YES;
label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 320, 21)];
label.text = @"This is a test";
[label setFont:[UIFont systemFontOfSize:13]];
label.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:label];
hidden = YES;
} else if (hidden == YES) {
[UIApplication sharedApplication].statusBarHidden = NO;
[label removeFromSuperview];
label = nil;
hidden = NO;
}
}
您还可以设置 label = nil;
一旦从 super View 中删除它。
关于ios - removeObjectFromSuperView 不使用 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21220588/
我有一个按钮,当按下它时应该隐藏状态栏并在其位置放置文本。然后,当按下按钮时,标签应该从 view 中删除,状态栏将重新出现。第一部分有效——状态栏被隐藏,标签被放置在 view 上,问题是当我第二次
我是一名优秀的程序员,十分优秀!