2012-08-09 56 views
0

我使用這個代碼,以使一個的tableview細胞去到一個新的觀點:performSegueWithIdentifier將錯誤的觀點

[self performSegueWithIdentifier:@"hello" sender:self];

但每當我建立並運行它,然後單擊單元格,它帶給我以完全不同的/不相關的觀點。 任何想法?

+0

仔細檢查故事板中您的segue的標識符? – aforaudrey 2012-08-09 22:54:30

+0

已經做到了,沒有運氣:( – Alan 2012-08-10 03:45:21

+0

你有什麼機會不小心將兩個segues命名爲相同? – 2012-08-10 21:15:26

回答

0

在故事板中檢查您的segue的標識符。另外,如果您有多個賽段,請檢查是否將正確的賽段連接到正確的按鈕和正確的視圖。

+0

我檢查了標識符,它與在「performSegueWithIdentifier」行中調用的標識符相同。我現在只是使用DidSelectRowAtIndexPath – Alan 2012-08-10 03:44:34

+0

請嘗試下面的代碼: – 2012-08-10 10:08:29

0

嘗試在TableViewController

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"yourSegueIdentifierName"]) { 
     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
     NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath]; 
     [[segue destinationViewController] setDetailItem:object]; 
    } 
} 

這將偵聽SEGUE,請檢查SEGUE的標識符和你選擇的行下面的代碼。然後它會在選定的行中執行對象。 它還允許您在一個視圖中輕鬆地創建多個賽段,如果您需要它,您只需爲不同的賽格標識添加「if」功能。

如果您在TableViewController中只使用一個segue,實際上並不需要標識符,但無論如何它都是非常好的做法,以防萬一您希望稍後在代碼中添加其他segue階段。

+0

假設我把它放在正確的地方,即使我替換tableview名稱和這樣,我應該把這個? – Alan 2012-08-12 03:01:51

+0

你把它放在你的TableViewController窗口的實現文件(.m)中,你不需要改變代碼中的任何東西,你可以複製粘貼我寫的東西,除了標識你的segue的字符串。故事板,你需要給你的segue一個名字,並且在我寫上「yourSegueIdentifierName」的字符串中寫下那個名字。 de會將你點擊的單元格的細節交給下一個視圖,假設你想要的是這個。如果你想得到更詳細的答案,你必須在這裏複製粘貼你的代碼,所以我確切地知道你想要什麼。 – 2012-08-12 08:52:13

+0

感謝您的回覆,這裏是我的代碼執行文件 http://pastebin.com/ KDzHYfQV – Alan 2012-08-13 02:49:30