2015-04-15 30 views
1

單擊按鈕時我使用performSegueWithIdentifier(),以便可以將正確的信息傳遞給我的下一個ViewController。當我點擊按鈕時,它會移動到一個新的視圖空白視圖,然後打開我想用performSegueWithIdentifier()調用給出的信息的視圖。這要求用戶點擊後退按鈕2次才能返回到主視圖。添加performSegueWithIdentifier()調用後,創建了兩個不同的階段

有沒有辦法確保prepareForSegue()不會自動調用,因爲我使用performSegueWithIdentifier()?我有這種感覺,因爲我用performSegueWithIdentifier()調用prepareForSegue(),然後自動調用第二次。

這裏是我的代碼,我使用performSegueWithIdentifier()方法:

if (page == 1) 
    [self performSegueWithIdentifier:@"time1" sender:self]; 
else if (page == 2 
    [self performSegueWithIdentifier:@"time2" sender:self]; 
else if (page == 3) 
    [self performSegueWithIdentifier:@"time3" sender:self]; 
else if (page == 4) 
    [self performSegueWithIdentifier:@"time4" sender:self]; 
else if (page == 5) 
    [self performSegueWithIdentifier:@"time5" sender:self]; 
else if (page == 6) 
    [self performSegueWithIdentifier:@"time6" sender:self]; 
else if (page == 7) 
    [self performSegueWithIdentifier:@"time7" sender:self]; 
else if (page == 8) 
    [self performSegueWithIdentifier:@"time8" sender:self]; 
else if (page == 9) 
    [self performSegueWithIdentifier:@"time9" sender:self]; 
else if (page == 10) 
    [self performSegueWithIdentifier:@"time10" sender:self]; 
else if (page == 11) 
    [self performSegueWithIdentifier:@"time11" sender:self]; 
else if (page == 12) 
    [self performSegueWithIdentifier:@"time12" sender:self]; 
else if (page == 13) 
    [self performSegueWithIdentifier:@"time13" sender:self]; 

這裏是我的prepareForSegue()方法:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"time1"] || 
     [segue.identifier isEqualToString:@"time2"] || 
     [segue.identifier isEqualToString:@"time3"] || 
     [segue.identifier isEqualToString:@"time4"] || 
     [segue.identifier isEqualToString:@"time5"] || 
     [segue.identifier isEqualToString:@"time6"] || 
     [segue.identifier isEqualToString:@"time7"] || 
     [segue.identifier isEqualToString:@"time8"] || 
     [segue.identifier isEqualToString:@"time9"] || 
     [segue.identifier isEqualToString:@"time10"] || 
     [segue.identifier isEqualToString:@"time11"] || 
     [segue.identifier isEqualToString:@"time12"] || 
     [segue.identifier isEqualToString:@"time13"]) 
    { 
     InfoViewController *ivc = [segue destinationViewController]; 
     if (_stringText != nil) 
      ivc.viewText = _stringText; 
    }//end if 
}//end prepareForSegue 
+1

你應該嘗試做一些循環的代碼,只是一個建議,以改善你的代碼:) – LinusGeffarth

+0

@LinusG。好的,謝謝但這個問題呢? – saboehnke

+0

不知道,否則我會回答以及... – LinusGeffarth

回答

2

你segueing上採取什麼行動?你正在執行SegueWithIdentifier方法不應該自稱,這肯定是爲什麼你得到兩個後退按鈕。你有沒有把這個連接到故事板上?如果你在故事板中設置了遊戲後,你甚至可能根本不需要performSegueWithIdentifier調用,然後你只是爲每個遊戲準備好遊戲。

+0

我確實有它安裝在我的故事板,但我認爲這就是我應該這樣做。我控制 - 拖動按鈕到下一個視圖控制器,以便它將顯示下一個視圖控制器,我命名爲segue「time1」,然後在代碼中實現了performSegueWithIdentifier。我確實需要使用此方法調用。我不應該把它放在我的故事板上嗎?如果是的話,我將如何給這個segue提供一個標識符? – saboehnke

+0

所以它取決於你把它掛在哪裏......這些是按鈕,單元格,什麼?如果您控制從視圖控制器中單擊以查看控制器,則您需要調用執行。如果你控制點擊按鈕來查看控制器,那麼你不需要調用執行。我希望這可以幫助 – BHendricks

+0

這些是按鈕。我點擊按鈕到視圖控制器,但我之前的問題是,我需要調用執行,以確保下一個視圖控制器接收正確的字符串。正如你在我的準備中看到的,我正在給下一個視圖控制器一個NSAttributedString。該字符串根據點擊哪個按鈕而變化。這就是我稱之爲執行的原因,以便使用正確的字符串。 – saboehnke