我正在構建一個使用三個UIViewControllers的應用程序。我正在使用導航控制器進行導航。第一個視圖控制器(v1)將有兩個文本框和一個按鈕。在按鈕點擊,我有一個函數,檢查某些標準,如果它滿意,然後我移動到第二個視圖控制器(V2),否則我想移動到第三個視圖控制器(V3)。如何通過代碼實現?如何通過基於條件滿足的按鈕點擊在故事板之間進行導航?
最後一件事,我想捕獲這些文本框的值,並在適當的視圖控制器中使用它們。這怎麼可能?
我正在構建一個使用三個UIViewControllers的應用程序。我正在使用導航控制器進行導航。第一個視圖控制器(v1)將有兩個文本框和一個按鈕。在按鈕點擊,我有一個函數,檢查某些標準,如果它滿意,然後我移動到第二個視圖控制器(V2),否則我想移動到第三個視圖控制器(V3)。如何通過代碼實現?如何通過基於條件滿足的按鈕點擊在故事板之間進行導航?
最後一件事,我想捕獲這些文本框的值,並在適當的視圖控制器中使用它們。這怎麼可能?
在編程轉變到另一場景中故事板而言,一般的程序是:
定義視圖控制器(未按鈕,但視圖控制器)之間的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;
}
}
由於iOS的6.0,你可以在您的控制器中實施-shouldPerformSegueWithIdentifier:sender:
。比你在iOS 5中做的要簡單得多。
同意。如果你不需要支持iOS 5,那肯定會更好。 – Rob