2012-04-17 30 views
5

我有一個小應用程序,它使用多個部分佈局的初始表視圖。一部分顯示來自Twitter的最新趨勢,另一部分顯示來自Twitter的最新消息。當我點擊趨勢列表中的一個項目時,我轉換到一個新的表格視圖控制器,該控制器顯示關於該趨勢的最新推文。在故事部分的根控制器中,我可以在包含圖像,鏈接等的不同視圖控制器中顯示更多信息。問題是,當我選擇story部分中的任何內容時,我被推送到爲趨勢部分設置的表視圖控制器。我有一個名爲每個賽格瑞和定製類兩者,我想過渡的意見,我這樣做是爲了檢查被稱爲其賽格瑞:從表視圖控制器的多個賽段

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    if([[segue identifier] isEqualToString:@"viewTrendsSearch"]) { 

     //get the controller that we are going to segue to 
     SearchTrendResultsViewController *strvc = [segue destinationViewController]; 

     //get the path of the row that we want from the table view 
     NSIndexPath *path = [self.tableView indexPathForSelectedRow]; 

     //here we get the trend object from the array we set up earlier to hold all trends 
     Trends *results = [currentTrends objectAtIndex:[path row]]; 

     //pass the object that was selected in the table view to the destination view 
     [strvc setQuery: results]; 
    } 

    if([[segue identifier] isEqualToString:@"storyfullDetails"]) { 

     StoriesViewController *svc = [segue destinationViewController]; 

     NSIndexPath *path = [self.tableView indexPathForSelectedRow]; 

     Stories *results = [currentStories objectAtIndex:[path row]]; 

     [svc setStory:results]; 
    } 
} 

如何讓不同意見的任何建議?

回答

16

在你的問題中沒有足夠的信息可以肯定,但這聽起來像是一個我稱之爲自動對比手動對接的問題,以及對每個對象的限制。

自動自動通過從(原型)表單元格或其他控件拖動創建segue。關於它的好處在於它自動 - 輕觸控件執行segue,並且只需執行prepareForSegue:sender:,以便目標視圖控制器獲取正確的數據。缺點是任何給定的控件(包括原型表單元格)只能有一個傳出的繼續(否則,故事板不知道自動執行哪個)。

A 說明書 segue在IB中通過從源拖動視圖控制器創建。好處是視圖控制器可以有多個傳出段。另一方面,它們不與可控制的控制相關聯,所以你必須實現邏輯來確定在什麼時候執行(並且調用performSegueWithIdentifier:來實現它)。

鑑於這些權衡,也有你的問題,有兩種可能的解決方案:

  1. 使用多個原型表單元格 - 那麼每個可以有它自己的出自動SEGUE。您需要更改表格視圖控制器的tableView:cellForRowAtIndexPath:以檢查索引路徑的節號,併爲dequeueReusableCellWithIdentifier:選擇適當的標識符,但如果趨勢和故事單元格的內容不同,這可能會使事情更加方便或高效。

  2. 使用手動segues。然後,您的表格視圖控制器可以實現tableView:didSelectRowAtIndexPath:以根據索引路徑的部分選擇適當的標識符來呼叫performSegueWithIdentifier:

無論哪種方式,你的prepareForSegue:sender:執行看起來不錯。

+0

好的,謝謝!我會進一步研究這兩個選項,看看我能否繼續前進。關於解決方案1,您將如何實現多個原型表格單元格?在故事板界面中,你是否簡單地將另一個表視圖控制器拖到根控制器上? – swallace 2012-04-17 20:14:00

+0

在IB中選擇表格視圖,屬性檢查器將控制原型單元的數量。或者將庫中的UITableViewCell拖入表中。無論哪種方式,一定要選擇每個單元格,並給它一個唯一的標識符。 – rickster 2012-04-17 21:38:01

+0

優秀的解釋。幫助我更好地理解正在發生的事情 – Andrew 2012-07-25 02:15:33

相關問題