2015-03-13 127 views
0

昨晚我讓一個項目工作。將參數傳遞給另一個視圖控制器時出現異常

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

回答

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); 

     } 
    } 
+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

相關問題