2012-04-24 107 views
0

我想通過使用故事板ViewControllers之間的信息,但我得到一個錯誤之間的信息......我的代碼如下傳遞用故事板(NSInvalidArgumentException)控制器

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if([[segue identifier] isEqualToString:@"ToAssistance"]) 
    { 
     NSLog(@"To assistance"); 
    } 
    else if([[segue identifier] isEqualToString:@"ToMap"]) 
    { 
     UINavigationController * navController = (UINavigationController *)[segue destinationViewController]; 
     EventMapViewController * eventMapViewController = (EventMapViewController *)[navController topViewController]; 
    } 
} 

,但在行

EventMapViewController * eventMapViewController = (EventMapViewController *)[navController topViewController]; 

我得到下面的異常

2012-04-23 19:49:00.369 StoryboardAssistance[9916:11603] 
-[EventMapViewController topViewController]: unrecognized selector sent to instance 0x6e86380 2012-04-23 19:49:00.370 StoryboardAssistance[9916:11603] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[EventMapViewController topViewController]: unrecognized selector sent to instance 0x6e86380' 
*** First throw call stack: (0x135b022 0x2037cd6 0x135ccbd 0x12c1ed0 0x12c1cb2 0x546a 0x5424be 0x135ce99 0x11a14e 0x11a0e6 0x1c0ade 0x1c0fa7 0x1c0266 0x13f3c0 0x13f5e6 0x125dc4 0x119634 0x15fdef5 0x132f195 0x1293ff2 0x12928da 0x1291d84 0x1291c9b 0x15fc7d8 0x15fc88a 0x117626 0x218d 0x20f5) terminate called throwing an exception(lldb) 

有什麼建議?

回答

2

根據您的異常,您似乎在爲其topviewontroller詢問「eventMapViewController」,由於它不是導航控制器,因此顯然不存在。如果你檢查,你問它,你可以在這裏看到

[navController topViewController]; 

即navcontroller其實類型「EventMapViewController」的控制器,這將意味着這個

UINavigationController * navController = (UINavigationController *)[segue destinationViewController]; 

是不是給你一個UINavigationController但實際上你想要的是「EventMapViewController」。所以才刪除那些2線,如果這行不通添加

EventMapViewController * eventMapViewController = (EventMapViewController *)[segue destinationViewController]; 

,然後請註釋此行

EventMapViewController * eventMapViewController = (EventMapViewController *)[navController topViewController]; 

,並添加

NSLog(@"%@",navController); 

,並告訴我的輸出。

+0

這一行解決了這個問題:EventMapViewController * eventMapViewController =(EventMapViewController *)[segue destinationViewController]; 謝謝! – JohnnyAce 2012-04-24 01:22:35

+0

沒問題,祝你好運。 – Pochi 2012-04-24 01:32:09

+0

請看看這個:http://stackoverflow.com/questions/37377825/having-issue-with-uisplitviewcontroller – 2016-05-28 11:55:50

相關問題