2012-12-23 22 views
0

我正在構建一個使用三個UIViewControllers的應用程序。我正在使用導航控制器進行導航。第一個視圖控制器(v1)將有兩個文本框和一個按鈕。在按鈕點擊,我有一個函數,檢查某些標準,如果它滿意,然後我移動到第二個視圖控制器(V2),否則我想移動到第三個視圖控制器(V3)。如何通過代碼實現?如何通過基於條件滿足的按鈕點擊在故事板之間進行導航?

最後一件事,我想捕獲這些文本框的值,並在適當的視圖控制器中使用它們。這怎麼可能?

回答

1

在編程轉變到另一場景中故事板而言,一般的程序是:

  • 定義視圖控制器(未按鈕,但視圖控制器)之間的SEGUE;

  • 給予其原因請看故事板標識符;

  • 一個按鈕,做驗證創建IBAction,如果成功的話,做了

    [self performSegueWithIdentifier:@"myidentifier"]; 
    

參見本answer on stack overflow中,我通過在一些細節此過程中走了一個人。如果你的情況,這聽起來像你正在驗證數據,並可能執行一個賽段給出一系列條件,另一賽段在另一系列條件。因此,只需給這兩個segues唯一的標識符,然後您就可以在IBAction代碼中執行您想要的任何一個。

在將數據傳遞到下一個場景的方面,你在一個單獨的方法,prepareForSegue,目標控制器已經被創建之後iOS系統調用做到這一點,但在此之前它已經呈現。在這裏,您有機會將參數傳遞到目標控制器。例如,我假設我拍攝的人的名字和姓氏,並希望傳遞給目標控制器,它有名字和姓氏屬性:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"myidentifier"]) 
    { 
     MyDestinationController *controller = segue.destinationViewController; 
     controller.firstName = self.labelFirstName.text; 
     controller.lastName = self.labelLastName.text; 
    } 
} 
1

由於iOS的6.0,你可以在您的控制器中實施-shouldPerformSegueWithIdentifier:sender:。比你在iOS 5中做的要簡單得多。

+0

同意。如果你不需要支持iOS 5,那肯定會更好。 – Rob