0

我得到了一个带有自定义单元格的原型表,在这个单元格内有一个 textField。

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

测试时,当我将 1 个单元格的 txt 字段中的文本滚动到另一个单元格时,键盘类型发生了变化,一切都变得一团糟!

代码:

- (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;
}
4

1 回答 1

0

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

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

于 2013-04-15T15:45:13.723 回答