今天在工作中发现一个坑, 其他页面都是隐藏。YSViewController 使用的时候必须是需要 navigationBar 和 toorbar,但是 pop出这个viewcontroller后,需要隐藏navigationBar 和 toorbar,但是直接设置为hidden=YES会出现其他页面压栈出现问题。
toolbar.hidden=YES 会导致后期压栈出栈的界面出现异常。
//self.navigationController.navigationBarHidden=YES; [self.navigationController setNavigationBarHidden:YES animated:YES]; //self.navigationController.toolbar.hidden=YES; [self.navigationController setToolbarHidden:YES animated:YES]; [self.navigationController popViewControllerAnimated:YES];
同样下面一种情况类似:
- (void)viewWillAppear:(BOOL)animated
{[super viewWillAppear:animated];self.navigationController.navigationBarHidden = YES;
}- (void)viewWillDisappear:(BOOL)animated
{[super viewWillDisappear:animated];self.navigationController.navigationBarHidden = NO;
}
这样写导致的结果就是当你右滑返回一部分,再回来点击push到下一个页面,导航栏会混乱,本来该显示下一个页面的标题,结果变成了上一个页面的标题,如果你在这个页面进行其他的操作很可能导致崩溃,因为系统还以为是在上一个页面。
正确的写法应该是下面这样。
- (void)viewWillAppear:(BOOL)animated {[self.navigationController setNavigationBarHidden:YES animated:animated];[super viewWillAppear:animated];
}- (void)viewWillDisappear:(BOOL)animated {[self.navigationController setNavigationBarHidden:NO animated:animated];[super viewWillDisappear:animated];
}