我使用表来编辑模型对象(注释实例)的属性。表中的单元格对应于Annotation类的不同属性:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellAnnotation"];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:@"cellAnnotation"] autorelease];
}
[[cell textLabel] setText:@"Category"];
categoryField = [[UITextField alloc] initWithFrame:CGRectMake(90, 8, 200, 25)];
[categoryField setAutocorrectionType:UITextAutocorrectionTypeNo];
[categoryField setFont:[UIFont fontWithName:@"Verdana" size:15]];
[categoryField setText:[[annotation category] name]];
[categoryField setDelegate:self];
[[cell contentView] addSubview:categoryField];
[categoryField release];
return cell;
令人惊讶的是,如果我在控制器的viewWillAppear方法中重新加载数据,那么我会得到一个奇怪的行为:当按下退格键时,UITextField中的字符不会被清除,尽管它们在第一个响应者辞职时不存在在UITextField中并检索其text属性。谁能帮我?提前致谢。
答案 0 :(得分:1)
您不应将子视图添加到if(cell == nil){...}子句之外的表格单元格中。表格单元格被重新循环,因此每次调用cellForRowAtIndex时,您都会再次将该子视图添加到表格单元格而不删除旧的子视图。这可能就是为什么看起来文本没有被清除的原因,因为你在单元格中添加了多个字段。
请查看我写的其他答案,以获得更详细的解释: