0

我正在向导航栏添加视图

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

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

[mySubView removeFromSuperView];

当应用程序第一次启动时它没有删除视图,因此在 secondview 导航栏上也可以看到视图

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

4

4 回答 4

4

为您的 mysubview 分配一个标签,例如

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

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

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

希望它可以帮助你。

于 2013-04-19T11:17:32.437 回答
2

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

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

试试这个会有帮助的!!!!

于 2013-04-19T11:28:36.653 回答
0

ViewController您拥有 subView 的地方执行以下操作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];
}

你很高兴。尝试和测试。

于 2013-04-19T11:28:47.243 回答
0
  -(void)viewWillDisappear:(BOOL)animated    
      {
        [self.mySubView removeFromSuperview];
      //[_mySubView removeFromSuperview];

    }
于 2014-04-22T06:48:24.427 回答