当我打电话时:
[self.navigationController pushViewController:SOME_VIEW_CONTROLLER animated:YES];
应用程序随机卡住(它没有崩溃,所以没有错误日志)。尝试调试它没有结果。
注意:
- 我从
UIViewController
类别中调用了这个pushViewController
。 有什么问题吗? - 我没有使用 Storyboard
- 问题随机出现(并非一直发生)
- 卡住时,
viewDidAppear
不会被调用(viewWillAppear, viewWillLayoutSubviews, viewDidLayoutSubviews
仍然 打电话) - 当我使用 animated:NO 时,问题从未发生过
一些代码片段:
- (void)routeToBookingDetailsForCustomer:(BookingModel *)booking {
VTBookingDetailsForCustomerViewController *vc = [VTBookingDetailsForCustomerViewController new];
vc.booking = booking;
[self.navigationController pushViewController:vc animated:YES];
}
刚找到另一个类似案例的帖子: pushViewController stuck or viewdidappear fail
最佳答案
我认为你必须像这样传递 Nib name
- (void)routeToBookingDetailsForCustomer:(BookingModel *)booking{
VTBookingDetailsForCustomerViewController *vc = [[VTBookingDetailsForCustomerViewController alloc]initWithNibName:@"VTBookingDetailsForCustomerViewController" bundle:nil];
vc.booking = booking;
[self.navigationController pushViewController:vc animated:YES];
}
Nib 名称是指您的 XIB 名称
无论您的 VTBookingDetailsForCustomerViewController 的 XIB 名称
是什么,您都必须在 initWithNibName:@"yourXIBname"
中传递它/p>
关于iOS Push Segue(以编程方式)有时会卡住但不会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29114087/