2011-08-10 75 views
0

我有一個tableview,用戶可以使用一個滑塊製作部分人。所以每個部分可以有多少人。我想保存該tableview的狀態,然後在它們返回時重新加載它。保存和加載狀態的tableview

我想,因爲我使用核心數據,我可以給每個人一個行和部分屬性。所以我可以保存,但我不知道最好的方式來使用這些值來填補桌面視圖時,它再次出現。

我不認爲NSUserDefaults會最好的工作,因爲我有很多可以分解成部分的組。我一直在努力爭取幾天的最佳做法,但我仍然不確定要走什麼路。

(每米希爾·梅塔)

// Set core data values 
    int sec = 0; 
    int row = 0; 
    for (NSArray *section in groupsArray) { 
     for (People *person in section) { 
      [person setSubgroupSection:[NSNumber numberWithInt:sec]]; 
      [person setSubgroupRow:[NSNumber numberWithInt:row]]; 
      row++; 
     } 
     sec++; 
     row = 0; // new section so restart the row count 
    } 
+0

保存數據的代碼請... –

+0

我添加了保存數據的代碼。 – tazboy

回答

2

如果你已經熟悉CoreData,那麼也許你應該堅持你描述的計劃。我看到它的方式,你應該做一些TableViewInfoManagedObject:NSManagedObject。這個TableViewInfoManagedObject應該有像@dynamic numberOfSections這樣的成員,它描述了你的表格視圖需要什麼工作。

如果使用CoreData管理人已經考慮使用關係映射numberOfSectionsnumberOfGroups或任何你在你的People:NSManagedObject

此外,您還需要考慮何時適當的時間來「保存」您的狀態,這似乎完全由滑塊確定。在這種情況下,您可能需要爲valueChanged實施IBAction

編輯0:根據您提供的代碼片段,它看起來像在循環結束時,您將擁有所需的必要信息。 sec的最終值應該對應於UITableViewDataSource委託方法-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView,我不確定爲什麼要設置People對象的行號,除非您嘗試實現某種排序順序,無論如何應該由NSSortDescriptor完成。所以tableView:numberOfRowsInSection應該返回類似[[peopleinSection: section] count]tableView:cellForRowAtIndexPath應該設置,以便它返回像cell.textLabel.text = [[[peopleInSection:indexPath.section] objectAtIndex:indexPath.row] getPersonName]單元格。說得通?

+0

我很好地保存每個人的部分和行,但我不知道如何在tableView:cellForRowAtIndexPath中使用該信息來正確填充表。 – tazboy

+0

澄清:每個人都在tableView的_one_部分? –

+0

是的,每個人都會在一個部分,只有一個部分。如果我在一個小組中有6個人,我可以有2個人(行)的3個小組(部分)或3個小組的2個小組等等... – tazboy

1

如何創建,你需要保存每個對象的類(NSObject的子類),並在該類您可以添加屬性每個對象。然後,您可以使用NSKeyedArchiver/Unarchiver來保存和加載對象以重用。

0

創建一個函數,它將把row和Section作爲參數,並通過搜索數組返回特定​​的人......得到了我的觀點?