2013-06-27 107 views
0

我想知道是否有任何方法強加if語句使用相同的segue。基本上我希望表中的相同視圖能夠到達,但是基於所選單元格,我希望它攜帶與用戶選擇相關的不同數據。例如,如果用戶在表格中選擇達拉斯,則不應在紐約顯示信息。基於單元格選擇的分段的任何「IF」聲明?

我是從一個視圖創建100個segues到下一個,還是有一種方法可以根據if語句攜帶相關數據?

任何幫助,非常感謝。

感謝

+0

可以使用相同的SEGUE,並通過根據所選擇的要顯示的下一個視圖控制器上的信息細胞。沒有必要創建100個聯賽。 –

+0

如何使用相同的segue傳遞基於單元格選擇的數據就是我所要求的。任何代碼或指針?林不知道如何說如果達拉斯加載這個列表與如果紐約加載這個列表。 – Tanner

+0

我已經發布了一個答案,檢查它是否可以幫助你。 –

回答

2
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    // Assume self.view is the table view 
    NSIndexPath *path = [self.tableView indexPathForSelectedRow]; 
    DetailObject *detail = [self detailForIndexPath:path]; 
    [segue.destinationViewController setDetail:detail]; 
} 

只是傳遞的信息或對象要顯示視圖控制器上。

+0

什麼是DetailObject?我得到一個錯誤。使用未聲明的標識符細節。我只是複製並粘貼了該行。我是否會像If(path == o)那樣顯示這個列表? – Tanner

+0

DetailObject是要引用下一個視圖控制器的對象。 –

+0

非常感謝你。我只是不知道該怎麼說這個列表出現,而不是其他10個使用它。是否有可能只是如果(路徑== 0){啓動此列表}否則如果(路徑== 1){改爲啓動此列表}? – Tanner

0

這裏是你如何做到這一點....

  1. 當你創建一個SEGUE,你給一個標識符它。
  2. 當U執行SEGUE,下面的方法被調用,所以將其覆蓋

這樣的事情,

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"Identifier of your segue"]) { 

    //Access the destination controller by, You can cast it to your custom controller class 
    UIViewController *destination = segue.destinationViewController; 

    //Do what u want 

    } 
} 

所以筆者認爲,ü要當一個細胞去一個特定視圖在表中被選中, 您需要從具有表格的控制器創建您想要轉到的控制器的segue。不要從單元格創建segue到控制器。

tableView:didSelectRowAtIndexPath:可以執行使用這個SEGUE ...

[self performSegueWithIdentifier:@"Your segue Identifier" sender:self]; 

prepareForSegue:sender將反正叫你可以爲目標控制器設定的數據。你現在只有一個賽格。

對於依賴於細胞的選擇更多信息Refer this

+0

我發現這隻會在一個階段工作。所以如果我有一個被認爲是「第一」的segue,並且想用第二個代碼調用它,那麼它會崩潰,說第二個不存在。除非我明白錯誤? – Tanner

+0

@坦納,我編輯了答案,它有幫助..? – akshaynhegde

0

CTR +拖動從tablviewcontroller到的DetailView並給予標識符原因請看和使用以下方法

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"showRecipeDetail"]) { 
     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
     RecipeDetailViewController *destViewController = segue.destinationViewController; 
     destViewController.recipeName = [recipes objectAtIndex:indexPath.row]; 
    } 
    }