原因一:加入了本身的視圖
[self.view addSubview:self.view];
原因二:重復(fù)推出了控制器
下面的方法能復(fù)現(xiàn)bug
[self.navigationController pushViewController:set animated:YES];
//0.3秒后重復(fù)推出(正常是0.5)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.navigationController pushViewController:set animated:YES];
});
解決:
1.Commond + N 新建Objective-C File文件

張小牛.png
2.UINavigationController+ZXN中添加如下代碼
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated isFixed:(id)isFixed{
if (!isFixed || self.topViewController == isFixed){
[self pushViewController:viewController animated:animated];
}
}
- (id)navigationlock{
return self.topViewController;
}
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated isFixed:(id)isFixed{
if (!isFixed || self.topViewController == isFixed){
[self popToViewController:viewController animated:animated];
}
return nil;
}
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated navigationLock:(id)isFixed{
if (!isFixed || self.topViewController == isFixed) {
[self popToRootViewControllerAnimated:animated];
}
return nil;
}
3.用法
id isFixed = [self.navigationController isFixed];
[self.navigationController pushViewController:compet animated:YES isFixed: isFixed];
4.檢驗(yàn)
id isFixed = [self.navigationController isFixed];
[self.navigationController pushViewController:compet animated:YES isFixed: isFixed];
//0.3秒后重復(fù)推出(正常是0.5)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.navigationController pushViewController:compet animated:YES isFixed: isFixed];
});