我使用UIActionSheet确认删除TableView中的行。我有3行,但当我交换删除第一行时,第一行不删除但第三行被删除。继续删除第一行但删除第二行后。我不知道为什么。请帮我解决这个小问题。
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"cancel" destructiveButtonTitle:@"Delete" otherButtonTitles: nil];
[actionSheet showInView:self.view];
}
}
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
switch (buttonIndex) {
case 0:
[listOfName removeObjectAtIndex:self.selectedIndex];
//selectedIndex = indexPath.row;
[self viewWillAppear:YES];
}
}
答案 0 :(得分:3)
这是问题
[listOfName removeObjectAtIndex:self.selectedIndex];
selectedIndex
的{{1}}值始终为0,因为未将其设置为要删除的表格行的索引。
在展示UIActionSheet
之前,将其值设置为indexPath.row
。
UIActionSheet
然后在self.selectedIndex = indexPath.row;
[actionSheet showInView:self.view];
0中的clickedButtonAtIndex:
方法中,确保重新加载表格视图。
case
答案 1 :(得分:1)
您也可以从数组中删除元素,然后再次重新加载表视图
答案 2 :(得分:0)
我发现这个委托方法,我想,你已经实现了。
tableView:moveRowAtIndexPath:toIndexPath:
从我的角度来看,你应该将toIndexPath存储为属性或属性,当用户确认时,使用存储的“toIndexPath”将其删除。如果用户取消此操作,请将属性或属性设置为nil(在ARC上下文中或在NON-ARC上下文中释放该属性并将其设置为nil)。
答案 3 :(得分:0)
从数组中删除元素。
[yourArray removeObject:indexpath.row];
重新加载你的桌面视图。
[yourTableView reloadData];
答案 4 :(得分:0)
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
selectedIndex = indexPath.row;
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"cancel" destructiveButtonTitle:@"Delete" otherButtonTitles: nil];
[actionSheet showInView:self.view];
}
}
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
switch (buttonIndex) {
case 0:
[listOfName removeObjectAtIndex:self.selectedIndex];
[tableView reloadData];
}
}