如何查找/删除UITableViewCell的CUSTOM行详细信息

时间:2013-01-09 12:42:15

标签: iphone objective-c uitableview ios6

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

我是iPhone应用程序的新手并尝试使用UITableView学习JSON。我跟着this video学习了。

我使用Stoaryboard创建了相同的示例,并添加了可以添加数据的新屏幕。现在我试图删除数据。所以我所做的就是思考而不是下面的方法,我会在每一行添加按钮,点击后我会删除数据。

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

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

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

以下是我的屏幕的样子。

enter image description here

注意:

UITableViewCell属于CUSTOM类型。

3 个答案:

答案 0 :(得分: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. multiple-row-selection-and-editing-in

答案 1 :(得分:1)

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

的条目

答案 2 :(得分:0)

您可以通过多种方式获取单元格的cell或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);
//......

}

OR 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

Custom UITableViewCell button action?