2014-03-06 115 views
0

我試圖傳遞一個值使用故事板segue。我的故事板是導航控制器 - >視圖控制器 - >視圖控制器。iOS瀏覽控制器與導航控制器之間的segue

我確定其他設置都正確。我沒有任何錯誤,在模擬器上測試過,但我然後提出:

[RunViewController2 topViewController]:無法識別的選擇發送到實例0x109d6a0b0 2014年3月6日22:54:31.261 RunPal [22381: 70B] *終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,原因:「 - [RunViewController2 topViewController]:無法識別的選擇發送到實例0x109d6a0b0」

我使用在我的第一視圖控制器的代碼是:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if([segue.identifier isEqualToString:@"passSegmentedValue"]){ 

     UINavigationController *nav = [segue destinationViewController]; 
     RunViewController2 *runVC2 = (RunViewController2 *)nav.topViewController; 

     run2VC.weekIdentifier = ((UISegmentedControl*) sender).selectedSegmentIndex; 
    } 
} 
+2

該例外清楚地表明您正在嘗試將消息topViewController發送到RunViewController2。你能否確保segue導向導航控制器? – Sandeep

+0

發表您的故事板的截圖,請 –

+0

[情節提要](http://imgur.com/VCgjDYY) –

回答

0

試試這個:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if([segue.identifier isEqualToString:@"passSegmentedValue"]){ 

     RunViewController2 *runVC2 = [segue destinationViewController]; 

     run2VC.weekIdentifier = ((UISegmentedControl*) sender).selectedSegmentIndex; 
    } 
} 
+0

嘗試這樣做,我現在得到以下錯誤: 'code' 2014年3月7日14:14:50.894 RunPal [ 39342:70b] - [UIButton selectedSegmentIndex]:無法識別的選擇器發送到實例0x109b75150 2014-03-07 14:14:50.930 RunPal [39342:70b] ***終止應用程序,由於未捕獲異常'NSInvalidArgumentException',原因:' - [UIButton selectedSegmentIndex]:無法識別的選擇器發送到實例0x109b75150' '代碼' –

+0

您的發件人是UIButton,而不是UISegmentedControl。你可以發佈你的視圖的屏幕截圖嗎? –

+0

[鏈接](http://imgur.com/VCgjDYY) –

0

檢查什麼通過使用一個破發點的線RunViewController2 *runVC2 = [segue destinationViewController];在調試控制檯使用po命令類型目的地控制器。

這肯定會告訴你目的地不是UINavigationController類型,因此調用topViewController方法會導致崩潰。您的目標視圖控制器可能類型爲RunViewController2,實際上與Armand DOHM提到的類似。