2010-07-25 88 views
0

進出口單個記錄製作iPhone應用程序,其中包括運動隊的名單。 RootViewController列出了表格視圖中的所有團隊。 當我點擊一行時,我想加載一個TeamViewController,它只顯示單個團隊的記錄。iPhone - 如何選擇,並顯示在分組表視圖格式

美中不足的是林想顯示在分組表視圖樣式是單一團隊的詳細信息。

這引起了我無窮的問題。

我似乎無法制定出在那裏我對我的需要的對象畫。例如我需要使用NSFetchedResultsController。

我已經實現了核心數據,並且可以看到如何從AppDelegate和RootViewController執行的示例,但是需要複製哪些位以及在新的TeamViewController中調用的哪些部分讓我難住。

要在TeamViewController中設置cellForRowAtIndexPath,我需要經歷的主要步驟是什麼,以便我可以拉入單個選定的記錄並能夠操縱它,以及我該如何爲此佈置分組表格記錄。

更廣泛地說什麼我不是似乎得到是位在結轉在每一個新的視圖控制器,所以我可以讓我的導航軟件有很多頁,每個記錄鑽給下一個頁面視圖。

如果這是一個有點困惑只是問我更多的問題,我會澄清。

回答

1

這聽起來您的使用主從模式,其中你有主人的tableview隊的名單,然後顯示每個團隊的細節詳細視圖等。你只有一個實體「團隊」。

對於主tableview中,你會只使用一個NSFetchedResultsController獲取並責令強隊之列。

的詳細視圖控制器應該有保存到Team類的單個實例的引用屬性(或通用的管理對象,如果你沒有一個自定義的子類。)

在主視圖的didSelectCellAtIndexPath:方法,在將詳細信息視圖推送到導航控制器之前,將詳細信息視圖的團隊屬性設置爲FRC中該indexPath處的Team實例。

通過使用一個簡單的switch語句與一個情況下在其又與Team類/實體的一個屬性/值對應表中各行配置在詳細視圖中分組的表。由於表格顯示一個類的屬性/命名值而不是許多對象的變量列表,所以行和段的數量總是固定的。如果你想要多個組,你可以嵌套switch語句。外部開關用於部分,內部開關用於行。

@property (nonatomic,retain) Team *currentTeam; 
... 
- (void) configureCell:(UITableViewCell *) cell forIndexPath:(NSIndexPath *) indexPath{ 
    switch (indexPath.section) { 
     case 0: // first section 
      switch (indexPath.row) { 
       case 0: 
        cell.textLabel.text=currentTeam.name 
        break; 
       case 1: 
        cell.textLabel.text=currentTeam.homeCity 
        break; 
       case 2: 
        // and so on 
        break; 
     case 1: //second section 
      //... 
      break; 
      } 
      break; 
     default: 
      break; 
    } 
} 
1

沒有足夠的空間或時間上完全回答你的問題在此註釋字段,因爲這樣的答案需要涵蓋核心數據,同時也推動了新的視圖控制器到導航控制器堆棧,以及如何工作與UITableView和一個表視圖控制器。你可能想要通過蘋果的核心數據"Books" tutorial,這可能會幫助你的一些。

+0

感謝亞歷克斯的評論。 我讀過Apple的核心數據教程。 在這種情況下,將核心數據中的數據導入第一個視圖控制器(在這種情況下是RootViewController)毫無問題。 另外我也很好打開新的控制器與表視圖,並將其推到導航堆棧。 (所以,我現在面臨一個空的表視圖,當你在RootView中選擇一個項目時) 也許如果你可以從概念上爲我解釋TeamViewController如何知道它從哪裏繪製它的記錄,以及具體如何訪問當前在RootView中選擇的對象。 – Evolve 2010-07-25 06:21:41

+0

這就是爲什麼我建議通過本教程,因爲它向您展示瞭如何在第二個(「團隊」)視圖控制器中保留對託管對象上下文的引用,以及爲選定對象引用訪問您的Core Data商店中的特定數據。當您推動第二個視圖控制器時,您可以設置這些屬性。 – 2010-07-25 06:45:32

+0

嗨,亞歷克斯。我對鏈接的書籍教程有了一個很好的看法,這非常有幫助。 它回答整齊的問題。如何在分組視圖控制器中顯示單行數據(即單個團隊的詳細信息)。 (基本上用indexPath.row切換) 非常有幫助thankyou。 – Evolve 2010-07-26 01:30:01

0

下面是我自己的筆記,並希望幫助的人誰是尋求答案,我問在標題的問題。

要回答'如何以分組表格格式選擇和顯示單個記錄' 的問題,我會發現目前有兩件事情是相關的。

  1. 單個細胞的內容在(在我的情況TeamViewContoller)「的DetailViewController的的cellForRowAtIndexPath」所示。

  2. 您可以在一個的cellForRowAtIndexPath switch語句,其經過IndexPath.row,使您能夠輸出一個錶行中的一個頁面填寫表格視圖或分組表視圖。請參閱Alex在他的答案中提到的書籍示例應用程序的這一頁。 (http://developer.apple.com/iphone/library/samplecode/CoreDataBooks/Listings/Classes_DetailViewController_m.html

  3. 新頁面如何獲取數據? 就是這樣。

上的導航控制器堆棧的頂部的當前視圖控制器創建該序列中的下一個視圖控制器和時,它推動它壓入堆棧之前,設置數據這個視圖控制器,用作數據源,需要填充其表格視圖。

蘋果在這裏引用是有用的: http://developer.apple.com/iphone/library/documentation/userexperience/conceptual/TableView_iPhone/TableViewAndDataModel/TableViewAndDataModel.html

相關問題