2

这个问题与我之前的问题有点相关

我是 iPhone 应用程序的新手,正在尝试UITableView使用JSON. 我跟着this video学习。

我使用 Storyboard 创建了相同的示例,还添加了可以添加数据的新屏幕。现在我试图删除数据。所以我所做的不是下面的方法,而是在每一行上添加按钮,然后单击该按钮,我将删除数据。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

但我不知道如何获取行详细信息以及如何删除。

任何帮助/建议将不胜感激。

下面是我的屏幕的样子。

在此处输入图像描述

笔记:

UITableViewCell是自定义类型。

4

3 回答 3

2

使用以下代码根据编辑操作删除更新数据模型。

此波纹管代码只是从数组和表中热删除或删除对象的示例..有关更多信息,请查看我在下面发布链接的教程..

- (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

     if (editingStyle == UITableViewCellEditingStyleDelete) {

         [arryData removeObjectAtIndex:indexPath.row];

        [tblSimpleTable reloadData];

     } 
}

或者也使用此波纹管逻辑与单元格的自定义按钮...

- (IBAction)deleteCustomCellWithUIButton:(id)sender
{
  NSIndexPath *indexPath = [yourTableView indexPathForCell:(UITableViewCell *)[[[sender superview] superview] superview]];
  NSUInteger row = [indexPath row];
  [yourTableView removeObjectAtIndex:row];
  [yourTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]  withRowAnimation:UITableViewRowAnimationFade];
}

有关更多信息,请参阅这些教程...

  1. iphone-sdk-tutorial-add-delete-reorder-UITableView-row

  2. 多行选择和编辑

于 2013-01-09T12:56:23.880 回答
1

您可以在每一行上添加一个按钮并将其设置button.tag为方法indexPath.row中的cellForRowAtIndex:Array然后在您的按钮方法中,您可以从用于填充的条目中删除UITableView然后reloadData

于 2013-01-09T12:47:50.647 回答
0

您有很多方法来获取单元格或单元格的 indexPath:

  • (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
  • (NSIndexPath *)indexPathForCell:(UITableViewCell *)cell
  • (NSIndexPath *)indexPathForRowAtPoint:(CGPoint)point
  • (NSArray *)indexPathsForRowsInRect:(CGRect)rect
  • (NSArray *)visibleCells
  • (NSArray *)indexPathsForVisibleRows

如果你想处理 UIButton 的 IBAction 而不是像这样使用 indexPathForRowAtPoint :

-(IBAction)myAction:(id)sender
{

CGPoint location            = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *indexPath      = [self.tableView indexPathForRowAtPoint:location];
UITableViewCell *swipeCell  = [self.tableView cellForRowAtIndexPath:indexPath];

NSLog(@"Selected row: %d", indexPath.row);
//......

}

或 indexPathForCell

- (void)buttonPressedAction:(id)sender
{
   UIButton *button = (UIButton *)sender;
   // Get the UITableViewCell which is the superview of the UITableViewCellContentView which is the superview of the UIButton
   (UITableViewCell*)cell = [[button superview] superview];
   int row = [myTable indexPathForCell:cell].row;
}

我从以下代码中获取了代码: Detecting which UIButton was pressed in a UITableView

自定义 UITableViewCell 按钮操作?

于 2013-01-09T12:57:06.113 回答