2013-06-11 85 views
0

我有一個可以重新排列UITableViewCells的順序,可以刪除細胞然而一個應用程序,我needa方法來保存重新排列或刪除表格視圖單元的順序。我使用一個NSMutableArray保存細胞重新排列的順序表視圖

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
if (!maTheData) { 
maTheData = [[NSMutableArray alloc]  initWithObjects:@"Bus", @"Truck", @"Car",nil]; 


} 
} 

- (NSInteger)numberOfSectionsInTableView: (UITableView *)tableView 
{ 
return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
return [maTheData count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath   *)indexPath 
{ 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"tvcItems"]; 
UILabel *lblName = (UILabel *)[cell viewWithTag:100]; 
[lblName setText:[maTheData objectAtIndex: [indexPath row]]]; 
return cell; 
} 

- (void)tableView:(UITableView *)tableView commitEditingStyle:   (UITableViewCellEditingStyle)editingStyle  forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
if (editingStyle == UITableViewCellEditingStyleDelete) { 
// Delete the row from the data source 
[maTheData removeObjectAtIndex:[indexPath row]]; 
// Delete row using the cool literal version of [NSArray  arrayWithObject:indexPath] 
[tableView deleteRowsAtIndexPaths:@[indexPath]  withRowAnimation:UITableViewRowAnimationFade]; 
} 
else if (editingStyle == UITableViewCellEditingStyleInsert) { 
// Insert something into the array, and you can just add a populated NSIndexPath of data or simplr reload data 
[maTheData addObject:@"I'm a new item!"]; 
[tableView reloadData]; 
} 
} 

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath 
{ 
NSString *mover = [maTheData objectAtIndex: [fromIndexPath row]]; 
[maTheData removeObjectAtIndex:[fromIndexPath row]]; 
[maTheData insertObject:mover atIndex:[toIndexPath row]]; 

[tableView setEditing:NO animated:YES]; 

} 

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
return YES; 
} 



- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
[tableView setEditing:YES animated:YES]; 
} 
+0

那麼究竟是什麼不告訴你的代碼工作?你有沒有崩潰?我看到的唯一問題是,你從不在'cellForRowAtIndexPath'中創建一個單元格。當您從表視圖出列單元格,你應該說'如果(細胞!){電池= [[[UITableViewCell的頁頭]初始化...]自動釋放]; }' – herzbube

+0

我需要保存單元格的順序。我不知道該怎麼做。一切運行良好。 –

+0

我不認爲我理解。表格視圖單元格是'maTheData'中數據的可視化表示。插入新單元格或刪除或移動現有單元格時,可以很好地更新'maTheData'以反映GUI中的更改。因此,單元格的順序由'maTheData'中的元素順序反映。那麼你還想要什麼? – herzbube

回答

-2

爲了保持跨應用程序重新發布的數據,你必須的maTheData內容序列化到NSData,然後要麼通過NSUserDefaults寫的NSData到磁盤的內容,或您自己選擇的文件。在後一種情況下,你還必須決定在哪個文件夾要放置該文件 - 我建議類似的應用程序支持文件夾,或者無論如何,文檔文件夾。

我知道這是不是複製粘貼&的解決方案,但它應該讓你開始你的進一步研究。只要閱讀蘋果文檔和谷歌,網絡上有很多資源可以解釋如何做到這一點。