昨晚我让一个项目正常运作。今天早上没有任何更改的同一个项目会在此方法中引发异常:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"nuevo_servicio_segue"])
{
NSLog(@"estoy en segue pasando a nuevo servicio");
// Get reference to the destination view controller
NuevoServicioViewController *vc = [segue destinationViewController];
//pasamos la latitud del PO
//la convertimos a String
NSString *latitud = [NSString stringWithFormat:@"%.20f", self.puntoOrigen.latitude];
vc.parametro_origin_latitude = latitud;
//lo comprobamos
NSLog(@"LATITUD DEL PO PASADA=%@",latitud);
//pasamos la lONGITUD del PO
//la convertimos a String
NSString *longitud = [NSString stringWithFormat:@"%.20f", self.puntoOrigen.longitude];
vc.parametro_origin_longitude = longitud;
//lo comprobamos
NSLog(@"LONGITUD DEL PO PASADA=%@",longitud);
}
}
例外是在行:
vc.parametro_origin_latitude = latitud;
和
vc.parametro_origin_longitude = longitud;
如果我评论这两行,应用程序不会崩溃,我完全相信我没有改变任何代码。
我需要你的帮助来理解它。
编辑:
异常
2015-03-13 10:00:57.816 ABC[1358:29933] estoy en segue pasando a nuevo servicio
2015-03-13 10:00:57.816 ABC[1358:29933] -[UINavigationController setParametro_origin_latitude:]: unrecognized selector sent to instance 0x80ce83b0
2015-03-13 10:00:57.819 ABC[1358:29933] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController setParametro_origin_latitude:]: unrecognized selector sent to instance 0x80ce83b0'
*** First throw call stack:
(
0 CoreFoundation 0x00c15946 __exceptionPreprocess + 182
1 libobjc.A.dylib 0x0089ea97 objc_exception_throw + 44
2 CoreFoundation 0x00c1d5c5 -[NSObject(NSObject) doesNotRecognizeSelector:] + 277
3 CoreFoundation 0x00b663e7 ___forwarding___ + 1047
4 CoreFoundation 0x00b65fae _CF_forwarding_prep_0 + 14
5 ABC 0x0005723d -[MainViewController prepareForSegue:sender:] + 445
6 UIKit 0x017f9b37 -[UIStoryboardSegueTemplate _perform:] + 199
7 UIKit 0x0133681c -[UIViewController performSegueWithIdentifier:sender:] + 72
8 ABC 0x00056eb9 -[MainViewController boton_solicitar_action:] + 1001
9 libobjc.A.dylib 0x008b47cd -[NSObject performSelector:withObject:withObject:] + 84
10 UIKit 0x011de23d -[UIApplication sendAction:to:from:forEvent:] + 99
11 UIKit 0x011de1cf -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 64
12 UIKit 0x01311e86 -[UIControl sendAction:to:forEvent:] + 69
13 UIKit 0x013122a3 -[UIControl _sendActionsForEvents:withEvent:] + 598
14 UIKit 0x0131150d -[UIControl touchesEnded:withEvent:] + 660
15 UIKit 0x0122e60a -[UIWindow _sendTouchesForEvent:] + 874
16 UIKit 0x0122f0e5 -[UIWindow sendEvent:] + 791
17 UIKit 0x011f4549 -[UIApplication sendEvent:] + 242
18 UIKit 0x0120437e _UIApplicationHandleEventFromQueueEvent + 20690
19 UIKit 0x011d8b19 _UIApplicationHandleEventQueue + 2206
20 CoreFoundation 0x00b391df __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
21 CoreFoundation 0x00b2eced __CFRunLoopDoSources0 + 253
22 CoreFoundation 0x00b2e248 __CFRunLoopRun + 952
23 CoreFoundation 0x00b2dbcb CFRunLoopRunSpecific + 443
24 CoreFoundation 0x00b2d9fb CFRunLoopRunInMode + 123
25 GraphicsServices 0x02d9924f GSEventRunModal + 192
26 GraphicsServices 0x02d9908c GSEventRun + 104
27 UIKit 0x011dc8b6 UIApplicationMain + 1526
28 ABC 0x00066e5d main + 141
29 libdyld.dylib 0x0366dac9 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
答案 0 :(得分:1)
错误告诉您正在尝试在没有这些属性的导航控制器上设置某些值。 segue的目标视图控制器必须是导航控制器,因此您需要让它的topViewController访问您的自定义控制器。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"nuevo_servicio_segue"])
{
NSLog(@"estoy en segue pasando a nuevo servicio");
// Get reference to the destination view controller
UINavigationController *nav= segue.destinationViewController;
NuevoServicioViewController *vc = nav.topViewController;
//pasamos la latitud del PO
//la convertimos a String
NSString *latitud = [NSString stringWithFormat:@"%.20f", self.puntoOrigen.latitude];
vc.parametro_origin_latitude = latitud;
//lo comprobamos
NSLog(@"LATITUD DEL PO PASADA=%@",latitud);
//pasamos la lONGITUD del PO
//la convertimos a String
NSString *longitud = [NSString stringWithFormat:@"%.20f", self.puntoOrigen.longitude];
vc.parametro_origin_longitude = longitud;
//lo comprobamos
NSLog(@"LONGITUD DEL PO PASADA=%@",longitud);
}
}