【发布时间】:2015-09-23 12:58:56
【问题描述】:
当我使用pushViewController 时,会调用viewWillDisappear(第一个视图控制器)。之后,屏幕冻结,因此没有执行任何操作,我在nextviewcontroller 上放置了断点,它不会在viewDidLoad 方法中被调用。
//first View Controller from where pushViewController
[[AppCommonFunctions sharedInstance]pushVCOfClass:[NextViewController class] fromNC:[self navigationController] animated:YES popFirstToVCOfClass:nil modifyVC: ^(id info) {
[((NextViewController *)info)setEventInfo : object];
}];
//common method for push view controller in another file
- (void)pushVCOfClass:(Class)class1 fromNC:(UINavigationController *)nc animated:(BOOL)animated popFirstToVCOfClass:(Class)class2 modifyVC:(operationACFFinishedBlock)modify {
RESIGN_KEYBOARD
[self popToViewControllerOfKind : class2 from : nc];
UIViewController *vc = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:[class1 description]];
if (modify) {
modify(vc);
modify = nil;
}
[nc pushViewController:vc animated:animated];
}
- (UIViewController *)popToViewControllerOfKind:(Class)aClass from:(UINavigationController *)navController {
RESIGN_KEYBOARD
if (aClass) {
NSArray *arrayOfViewControllersInStack = navController.viewControllers;
for (int i = 0; i < arrayOfViewControllersInStack.count; i++) {
if ([[arrayOfViewControllersInStack objectAtIndex:i] isKindOfClass:aClass]) {
int index = (i > 0) ? (i - 1) : i;
[navController popToViewController:[arrayOfViewControllersInStack objectAtIndex:index] animated:NO];
break;
}
}
return [navController topViewController];
}
return nil;
}
【问题讨论】:
-
当你推送它时它是 vc 非 nil -- 添加 assert(vc) 和 assert(nc) 也
-
我可以在哪里添加断言?你能解释一下吗@Daij-Djan
-
assert(vs != nil)在你推送之前