2012-05-31 97 views
6

我工作在具有夫婦的意見第一種觀點的條件放在我想如果條件滿足則僅導航應該發生如何在故事板

爲此,我已經使用自定義的故事板採用基於條件的自定義SEGUE繼續,但無論我的情況是否滿足,它都會導航到新的視圖。

我創建方法定製賽格瑞類

- (void) perform{ 

    NSLog(@"source %@",self.sourceViewController); 
    NSLog(@"dest %@",self.destinationViewController); 

    UIViewController *sVC=self.sourceViewController; 
    UIViewController *dVC=self.destinationViewController; 

    [sVC.navigationController pushViewController:dVC animated:YES]; 


} 

我想設置條件,如果結果是1,那麼只有它應該導航。 Woul prepareforsegue或initwithsegue爲我提供任何幫助

+0

格式化您的代碼。 –

回答

30

你是說如果條件成立,你只想執行segue?

如果是這樣,則不是直接從控件或表格單元格創建segue,而是創建無觸發器segue。無觸發器的segue以視圖控制器作爲源,並且它不會自動啓動。相反,您可以隨時隨地以編程方式啓動它,包括IBAction。

要創建無觸發輪廓,請從場景底部的場景底座中的包含視圖控制器圖標開始控制+拖動輪廓。像往常一樣拖動到目標場景,並選擇賽格類型。選擇segue,並在檢查員中選擇一個segue標識符。

在運行時,當你想執行segue時,調用 - [UIViewController performSegueWithIdentifier:sender:]。你可以傳遞你想要的任何對象,包括零。如果發件人對你沒有用處,則通過零。

因此,簡言之:

  • 創建從視圖控制器扳機SEGUE到目標場景
  • 設置的標識符在檢查員
  • 在運行時,SEGUE,和形式的代碼,呼叫 - [UIViewController performSegueWithIdentifier:sender:]當你想觸發segue時。
+0

謝謝你的回答,但你可以告訴我,我從源拖到目的地的運動,它顯示我推,模態,自定義,我選擇自定義,並給這個segue一個標識符但是,因爲我已經設置了它的標識符,那麼它會強制在點擊按鈕時調用segue類的方法如何檢查條件 –

+0

嗨,Jon,我按照你的說法申請,現在它推送兩次我創建了一個push segue並設置它的標識符當我點擊我寫的按鈕時[UIViewController performSegueWithIdentifier:sender:] method [self performSegueWithIdentifier:@「JHCustomSegue」sender:nil];你可以請chk我在這裏做錯了 –

+3

嗨,最後我找到了解決方案希望它可以幫助別人你可以手動執行segues。當您在故事板中創建一個segue時,而不是Ctrl +從按鈕拖動到View Controller,從View Controller拖動到另一個View Controller。給Segue一個名字,然後在你的代碼中調用[self performseguewithidentifier @「seguename」] –