我有一个带有自定义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;
}
答案 0 :(得分:0)
您需要确保在tableView:cellForRowAtIndexPath:
中设置单元格的所有属性,因为控制器可以随时重用给定单元格。
要防止文本跳转,您需要将cell.txtField.text
设置为从单元格的支持对象加载的相应NSString
。同样,您应该每次都设置keyboardType
(我假设除了n
和m
之外还有其他情况)。每次设置属性都可确保您获得正确的显示,无论先前如何配置重用的单元格。