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];
}
那麼究竟是什麼不告訴你的代碼工作?你有沒有崩潰?我看到的唯一問題是,你從不在'cellForRowAtIndexPath'中創建一個單元格。當您從表視圖出列單元格,你應該說'如果(細胞!){電池= [[[UITableViewCell的頁頭]初始化...]自動釋放]; }' – herzbube
我需要保存單元格的順序。我不知道該怎麼做。一切運行良好。 –
我不認爲我理解。表格視圖單元格是'maTheData'中數據的可視化表示。插入新單元格或刪除或移動現有單元格時,可以很好地更新'maTheData'以反映GUI中的更改。因此,單元格的順序由'maTheData'中的元素順序反映。那麼你還想要什麼? – herzbube