iOS Push Segue(以编程方式)有时会卡住但不会崩溃

标签 ios objective-c iphone

当我打电话时:

[self.navigationController pushViewController:SOME_VIEW_CONTROLLER animated:YES];

应用程序随机卡住(它没有崩溃,所以没有错误日志)。尝试调试它没有结果。

注意:

  1. 我从 UIViewController 类别中调用了这个 pushViewController。 有什么问题吗?
  2. 我没有使用 Storyboard
  3. 问题随机出现(并非一直发生)
  4. 卡住时,viewDidAppear 不会被调用(viewWillAppear, viewWillLayoutSubviews, viewDidLayoutSubviews 仍然 打电话)
  5. 当我使用 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/

相关文章:

objective-c - UIActionSheet showInView 上的 iPad NSInternalInconsistencyException

iphone - 如何指定我的应用绝对需要启用定位服务?

ios - 无法运行 faSTLane 叹息。 "Couldn' t下载证书"

ios - CSS 和 JS 文件未在 uiwebview 中加载

iphone - 动画效果: breaking button into parts

ios - 在 Cocoa 中组合多个字符串

ios - NSArray代码未运行

ios - PhoneGap 2.0在XCode中不显示console.log

iphone - iPhone 上预建音频播放器 UI?

ios - 如何使用SDWebImage