iOS导航栏子视图在删除后重新出现

时间:2013-04-19 10:54:15

标签: ios cocoa-touch uinavigationbar

我正在向导航栏添加视图

UIView *mySubView = [UIView alloc] initwithFrame:frame];
[self.navigationController.navigationBar addSubview:mySubView];

我想在推送到secondviewController之前删除视图。

[mySubView removeFromSuperView];

当App第一次启动时,它没有删除视图,因此在第二个视图导航栏上也可以看到视图

我搜索并尝试了很多方法,但没有找到任何解决方案。

4 个答案:

答案 0 :(得分:4)

为你的mysubview分配一个标签,如

UIView *mySubView = [UIView alloc] initwithFrame:frame];
mySubView.tag =1;
[self.navigationController.navigationBar addSubview:mySubView];

然后在推送到secondViewController时添加此行。

[[self.navigationController.navigationBar viewWithTag:1] removeFromSuperview];

希望它对你有所帮助。

答案 1 :(得分:2)

在要删除的视图的标记属性中添加一个值,并在删除子视图之前检查它,例如,假设您为子视图添加了非零值:

 for (UIView *view in self.navigationController.navigationBar.subviews) {
if (view.tag != 0) {
    [view removeFromSuperview];
     }
}

试试这会有所帮助!!!!

答案 2 :(得分:0)

ViewController

的子视图NavigationBar执行以下操作 .h

中的

@property (nonatomic, retain) UIView *mySubView;
.m

中的

- (void)viewDidLoad {
    //Your Existing Code + following 2 lines
    self.mySubView = [[UIView alloc] initWithFrame:yourFrame];
    self.mySubView.backgroundColor = [UIColor whiteColor];
}

- (void)viewWillAppear:(BOOL)animated {
    //Your Existing Code + following 1 line
    [self.navigationController.navigationBar addSubview:self.mySubView];
}

- (void)viewWillDisappear:(BOOL)animated {
    //Your Existing Code + following 1 line
    [self.mySubView removeFromSuperview];
}

你很高兴。经过试验和测试。

答案 3 :(得分:0)

  -(void)viewWillDisappear:(BOOL)animated    
      {
        [self.mySubView removeFromSuperview];
      //[_mySubView removeFromSuperview];

    }