2013-04-15 31 views
0

我已經看到了一堆話題在多個ViewControllers去一個單一的視圖控制器,但不是相反。的XCode:單視圖控制器將多個ViewControllers

我想提出一個遊戲,你選擇Game_select.m一個遊戲,它需要走出去的6個視圖控制器之一。我試過使用故事板和硬編碼,但都沒有爲我工作。

我已經導入Game1.h和Game2.h到Game_select.m。 當我運行我的代碼時,它總是進入Game1 ViewController。 這是我正在嘗試的代碼:

if(getGame1) { 
    //go to game1 
    Game1 *game1 = [[Game1 alloc] init]; 
     [self.navigationController pushViewController:game1 animated:YES]; 
    } 

    if(getGame2) { 
    //go to game2 
    Game2 *game2 = [[Game2 alloc] init]; 
     [self.navigationController pushViewController:game2 animated:YES]; 
    } 

感謝您的幫助。 乾杯。

+0

你正在使用Game1來實例化遊戲2,這是你的問題中的拼寫錯誤嗎?或者它是你的代碼中的錯誤 – TieDad

+0

是的,抱歉, 。 – Adam

+0

只要將視圖控制器推入堆棧,看起來是否正確。您是否檢查過「getGame1」是否爲零值? –

回答

1

從你的主要的viewController其他viewControllers創建手動塞格斯。首先,點擊想要顯示的viewController。請確保您在的viewController本身選擇的,大家的看法沒有一個:

enter image description here

然後點擊塞格斯選項卡(最右側),並從「手動Segue公司」圓圈拖動到ViewController你想從繼續。

enter image description here

然後點擊塞格斯,給他們不同的名字在標籤這樣的:

enter image description here

然後,在你的代碼,你將有這樣一行:

[self performSegueWithIdentifier:@"showAlternate" sender:nil]; 

你會用它來顯示的viewController爲「showAlternate」標識。你會有多個標識符,比如「Game1」和Game2「

+0

創建一個segue是當你右鍵單擊一個對象,並讓它到另一個ViewController正確?如果是這樣,你想讓我從屏幕上選擇你想要玩的遊戲的ViewController嗎?如果是這樣,它只是讓我每個按鈕一個segue。我確實看到了標識符字段,但是每當我有另一個segue從同一個按鈕進入時,它就會清除第一個。 – Adam

+0

有一種方法可以在沒有按鈕的情況下創建一個segue。當我今天回到電腦時,我會更新我的答案。 – WolfLink

+0

我相信我正確地跟着這一點,我得到 ***由於未捕獲的異常'NSInvalidArgumentException',原因:'接收器()沒有標識符'game4_segue'' ***第一擲調用堆棧: (0x326222a3 0x3a34a97f 0x34635e31 0x52563 0x345150c5 0x34515077 0x34515055 0x3451490b 0x34514e01 0x3443d5f1 0x3442a801 0x3442a11b 0x361425a3 0x361421d3 0x325f7173 0x325f7117 0x325f5f99 0x32568ebd 0x32568d49 0x361412eb 0x3447e301 0x4d3e3 0x3a781b20) 的libC++ abi.dylib:終止叫做拋出異常 – Adam

2

個人而言,我不會用導航控制器,對於這種情況。讓所有的(正常)UIViewController,然後使用此代碼出示您viewControllers的一個你viewControllers子類:

注意,這段代碼只會工作,如果你是編程設置你的觀點,或者使用廈門國際銀行的(不是故事情節),那麼這也將如果使用initWithNibName: bundle:而不是使用init

if(getGame1) { 
    //go to game1 
    Game1 *game1 = [[Game1 alloc] init]; 
    [self presentViewController:game1 animated:YES completion:nil]; 
} 

if(getGame2) { 
    //go to game2 
    Game2 *game2 = [[Game2 alloc] init]; 
    [self presentViewController:game2 animated:YES completion:nil]; 
} 
+0

另外,讓我指出,如果getGame1和getGame2都是真的,你將會遇到問題。 – WolfLink

+0

當我嘗試這個時,屏幕變黑。 – Adam

+0

您是使用xib還是以編程方式安排視圖? – WolfLink

0

仔細檢查那getGame1getGame2BOOL價值觀,而不是某種物體,將評價爲是工作,如果其不爲零。我多次犯了這個錯誤:

NSNumber* booleanValue = @NO; 
if (booleanValue) { 
    // this code will run 
} 

if ([booleanValue boolValue]) { 
    // this code will not run - as expected 
} 

說真的,我犯了這個錯誤噸。

+0

我不認爲我遇到了這個問題,但爲了萬一我謝謝,我很感激。 – Adam

相關問題