UIKit

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];
}
上一篇下一篇

猜你喜欢

热点阅读