UITableViewCell viewWithTag如何确定正在编辑哪个单元格?

时间:2013-12-13 02:15:15

标签: ios iphone objective-c uitableview

我有一个包含文本视图的单元格的UITableView ...我最初使用它设置它们,但使用viewWithTag:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}

UITextView *tv = [cell viewWithTag:2112];

我感到困惑的是如何捕获正在编辑的特定单元格。

在我的编辑处理程序中,如何获取正在编辑的文本视图所在的单元格?

TextView的编辑处理程序将不具有其所在单元格的上下文。

3 个答案:

答案 0 :(得分:1)

我不确定为什么这么多人会使用这样的标签。如果您创建自定义UITableViewCell子类,则会有更清晰的代码,并将IBOutlets添加到您需要访问的任何UI元素,例如本案例中的文本视图。然后,在{ {1}},为文本视图提供一个等于cellForRowAtIndexPath的标记,这样您就可以查询该标记的文本视图,从而获得该单元格的indexPath。添加indexPath.row的子类涉及只需添加UITableViewCell并将其挂起 - 通常无需在.m文件中放置任何内容。

答案 1 :(得分:1)

您可以将标签分配给UITextView,如

UITextView *tv = [cell viewWithTag:2112];
[tv setDelegat:self];
[tv setTag:2000+indexPath.row];

并在UITextView委托方法中了解哪个单元格开始编辑

- (void)textViewDidBeginEditing:(UITextView *)textView
{
     if (textView.tag == 2000)//for first cell
     {
         ....
     }
     else if (textView.tag == 2001)//for second cell
     {
         ....
     }
}

答案 2 :(得分:0)

对UITextView进行子类化并添加名为@property (nonatomic, strong) id customData ;的属性,将indexPath存储在customData中,然后使用indexPath查找该单元格。

或者,只需将单元格存储在customData中,但您可以使用弱而不是强@property (nonatomic, weak) id customData ;