我的企业iOS应用中似乎每周发生一次问题。一切正常,然后随机我看到
的错误“无法找到segue的导航控制器'toOrderView'。推送segues只能在源控制器由UINavigationController实例管理时使用。”
以下是完整的崩溃报告:
线程:致命异常:NSGenericException 0 CoreFoundation 0x000000018588022c _exceptionPreprocess
1 libobjc.A.dylib 0x00000001974500e4 objc_exception_throw
2 UIKit 0x000000018a8cf934 - [UIStoryboardPushSegue destinationContainmentContext]
3基金会0x0000000186782fc4 _NSFireTimer
4 CoreFoundation 0x0000000185837e78 _CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
5 CoreFoundation 0x0000000185837b28 __CFRunLoopDoTimer
6 CoreFoundation 0x0000000185835574 __CFRunLoopRun
7 CoreFoundation 0x0000000185760f74 CFRunLoopRunSpecific
8 GraphicsServices 0x000000018f0936fc GSEventRunModal
9 UIKit 0x000000018a362d94 UIApplicationMain
10 MyLync 0x000000010015a8bc main(main.m:15)
11 libdyld.dylib 0x0000000197afaa08 start
同样,这个问题在99%的情况下都不会发生,但每隔一段时间错误就会崩溃我的应用程序。这是应用程序中最常见的转换,因为它是我们用户访问的主页面。我甚至记录了每台机器发生推送转换的次数,并且在发生崩溃时会报告它,但它在100次中的运行时间超过99次。它只发生在某些机器上,因为一些用户有0次这种崩溃的实例。
我完全糊涂了。任何帮助将不胜感激
另外值得注意的是,我为我们的组织创建了大量的应用程序,这是 ONLY 曾经遇到过这个问题的应用程序,尽管它们几乎都使用了导航控制器对象。
我可以发布代码或其他任何东西,但就像我说的那样,因为它几乎总是有效的,我正在寻找一个原因,为什么它不会少于1%的时间。
这是prepareForSegue块中的最新内容:
if ([[segue identifier]isEqualToString:@"toOrderView"]){
LYNViewOrderViewController *vovc = [segue destinationViewController];
vovc.orderNumber = sendingOrder.orderNo;
}
这是调用代码:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
if (tableView == tblCredits) {
sendingOrder = creditArray[indexPath.row];
}else{
sendingOrder = orderArray[indexPath.row];
}
[self performSegueWithIdentifier:@"toOrderView" sender:self];
}
没有填充发送订单的问题,我已经检查过了。