xcode tableview搞乱文本字段数据

时间:2013-04-15 14:56:31

标签: ios objective-c uitableview

我有一个带有自定义Cell的原型表,在这个单元格中有一个textField。

我的单元格数组很大,所以当我滚动表格时,需要重新创建单元格。

测试,当我滚动1个单元格的txt字段中的文本转到另一个单元格时,键盘类型会发生变化,所有内容都会混乱!

CODE:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"customTableCell";

    customTableViewCell *cell = (customTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];


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

    // Configuration
    cell.lblName.text = [self.pfFields objectAtIndex: [indexPath row]];

    cell.txtType = [self.pfTypes objectAtIndex: [indexPath row]];

    cell.mySql = [self.pfSql objectAtIndex: [indexPath row]];


    //cell.txtField.delegate = self;

    if ([[self.pfTypes objectAtIndex:[indexPath row]] isEqualToString: @"n"]) {
        [cell.txtField setKeyboardType:UIKeyboardTypeNumberPad];
    } else if ([[self.pfTypes objectAtIndex:[indexPath row]] isEqualToString: @"m"]) {
        [cell.txtField setKeyboardType:UIKeyboardTypeEmailAddress];
    }

    return cell;
}

1 个答案:

答案 0 :(得分:0)

您需要确保在tableView:cellForRowAtIndexPath:中设置单元格的所有属性,因为控制器可以随时重用给定单元格。

要防止文本跳转,您需要将cell.txtField.text设置为从单元格的支持对象加载的相应NSString。同样,您应该每次都设置keyboardType(我假设除了nm之外还有其他情况)。每次设置属性都可确保您获得正确的显示,无论先前如何配置重用的单元格。