将参数传递给另一个视图控制器时出现异常

问题描述:

昨晚我让一个项目工作。将参数传递给另一个视图控制器时出现异常

- (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

你得到了什么异常?发布实际的错误消息。 – rdelmar 2015-03-13 16:10:03

+0

这两个属性vc.parametro_origin_latitude和vc.parametro_origin_longitude是字符串? – LoVo 2015-03-13 16:10:12

+0

@rdelmar,例外发布 – user4619034 2015-03-13 16:11:25

错误是告诉你,你要设置不具有这些属性导航控制器上的一些价值观。 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); 

     } 
    } 
+0

该Segue来自MainViewController,该方法是,并转到嵌入NuevoServicioViewController的导航控制器。 – user4619034 2015-03-13 16:20:06

+0

我已经删除了导航控制器,并将segue直接放到视图控制器,现在它可以工作,但我必须说我不记得今天将其与导航控制器一起嵌入:),谢谢rdelmar – user4619034 2015-03-13 16:27:54

+0

@ user4619034,工作得太迟到深夜? – rdelmar 2015-03-13 16:28:54