UIKit - UINavigationController
2020-04-20 本文已影响0人
ienos
hidesBottomBarWhenPushed
// 如果掉了 self.tabBarcontroller.tabBar.hidden = YES , 且在 push 出新的控制器时设置了 hidesBottomBarWhenPushed = YES,
// pop 回来之后 tabBar 会显示,下面👇重写方法防止该情况发生
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
if (viewController.hidesBottomBarWhenPushed && self.tabBarController) {
if (self.tabBarController.tabBar.hidden) {
viewController.hidesBottomBarWhenPushed = NO;
}
}
[super pushViewController:viewController animated:animated];
}
栈内控制器提前释放
NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray:self.navigationController.viewControllers];
// [navigationArray removeAllObjects]; // 移除所有的controller
[navigationArray removeObjectAtIndex:navigationArray.count - 2]; // 移除指定的controller
self.navigationController.viewControllers = [navigationArray copy];
导航栏在该控制器显示和隐藏
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:NO];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:NO];
}