我的表格视图添加了内嵌单元格。
我已经进入了cellForRowAtIndexPath:
VMEditableTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"EditableCell"];
cell.editableTF.font = [UIFont fontWithName:@"Helvetica" size:17.0];
cell.editableTF.delegate = self;
cell.editableTF.tag = indexPath.row;
[cell.editableTF setBorderStyle:UITextBorderStyleNone];
if ([self.extrasArray[indexPath.row] isEqual:@0]) { // recognise new added cell
self.extrasArray[indexPath.row] = @"";
[cell.editableTF becomeFirstResponder];
}
cell.editableTF.text = self.extrasArray[indexPath.row];
return cell;
当我启动表视图时 - 内联添加工作正常。
当我使用“清除整个列表”按钮时,问题就开始了 - 它只是从extrasArray中删除所有对象。
当我在清除后添加单元格时,它不正确地出列,并且文本字段没有响应到becomeFirstResponder。 (它不是零,它调用textFieldShouldBeginEditing(总是YES)但没有更多的事情发生 - 没有键盘出现。
我的最后一个想法是在Cell实现中覆盖prepareForReuse方法 - 但遗憾的是,既没有将editableTF设置为nil也没有将它重新启动它也不起作用。
如何强制细胞重建自己而不是应对?
答案 0 :(得分:0)
尝试创建像这样的单元格
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
// Set up the cell..
[self configureCell:cell atIndexPath:indexPath];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
答案 1 :(得分:0)
所以今天上午非常适合代码灵魂,最后我想出了一个解决这个问题的方法:
我摆脱了这个单元格的故事板,并将自定义单元格的所有指针都更改为强大(所以我拥有它们)。
Dequeque可重用单元格正在从已删除的行重新创建UITextField,使控制器对所有权感到困惑并成为第一响应者。
请注意,在单元格init中创建它们并不起作用。
必须创建TextField并将其添加为子视图(也分配给强指针,以便稍后对其进行控制)。
以下是一些代码:
VMEditableTableViewCell *cell = [[VMEditableTableViewCell alloc] init];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
UIImage *bulletImage = [UIImage imageNamed:@"common_ico_dot.png"];
UIImageView *bulletImageView = [[UIImageView alloc] initWithFrame:CGRectMake(20,17,10, 10)];
bulletImageView.image = bulletImage;
UIImage *tickImage = [UIImage imageNamed:@"common_green_tick.png"];
UIImageView *tickImageView = [[UIImageView alloc] initWithFrame:CGRectMake(cell.bounds.size.width-30, 17, tickImage.size.width, tickImage.size.height)];
tickImageView.image = tickImage;
tickImageView.hidden = YES;
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(60, 10, 227, 30)];
textField.autocorrectionType = UITextAutocorrectionTypeNo;
textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
textField.delegate = self;
textField.font = [UIFont fontWithName:@"Maven Pro" size:17.0];
textField.tag = indexPath.row;
[textField setBorderStyle:UITextBorderStyleNone];
[cell addSubview:bulletImageView];
cell.bulletImageView = bulletImageView;
[cell addSubview:tickImageView];
cell.tickImageView = tickImageView;
if (cell.editableTF == nil) {
[cell addSubview:textField];
cell.editableTF = textField;
}