2013-02-11 76 views
0

我试图重新创建类似于在iPhone上编辑联系人中添加/编辑电话号码或电子邮件的功能。 我总是有一个空行,占位符文本可用。在编辑模式下(按下工具栏上的按钮),我取消隐藏UITextField。在'编辑修改'回调中,我在该部分插入了一个新行,与iPhone联系人编辑视图类似。 但是,插入后,当我开始修改第二行(第三行按预期方式插入)后,第一行文本字段的值将被清除为占位符值。
我已经阅读了某处,我需要存储第2行插入时的第1行的文本字段值,并在结束编辑(我假设),否则它会丢失?这对我来说似乎很奇怪,我想知道这是否是唯一的方法?在什么时候我会回去恢复它?这当然会不断重复,因为我插入一个新行并在清除所有行之前修改最后一行的值。 任何人都可以给我一个类似于联系人编辑功能的例子吗?如果我想通过让最后一行总是“+ Add Value”行来改变行的插入方式,那会有帮助吗?我不这么认为。 另外,如果我可以将UITableViewCellEditingStyleNone的第一行样式更改为UITableViewCellEditingStyleDelete,但是无论我尝试了什么,包括在中间设置切换编辑NO/YES设置所有可见行以响应忽略无法获得的切换它工作,除了UITableViewCellEditingStyleDelete最后一行。所以我觉得很好,让我有最初的行不能删除(不是我想要的,但我可以忍受它)。多行插入编辑模式下的自动插入与UITextFields,类似于联系人电话/电子邮件

回答

0

请确认,但我从更远的阅读猜测,滚动行出视图将导致相同的问题,所以在textFieldDidEndEditing以及可能在每个插入我的情况下,需要处理,以存储“新”数据存储阵列的相应条目中的每行数据。 但是,在我没有滚动的情况下,我可能需要做的: - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimat .... 被修改的部分中的所有行以及可能的所有可见行。非常感谢确认。

0

为什么在你的情况下重用? 如果所有行在任何时候都在屏幕上,只需为每个行创建一个新的UITableViewCell。

UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil] autorelease]; 

配置内容去它...

[cell.contentView addSubview:WHATEVER_YOU_CREATED]; 
[cell.contentView sizeToFit]; 
return cell; 

重用细胞是那些有许多行重用那些不再可见,以节约资源的方式。

+0

MyProfilePropertyCell * cell = [[MyProfilePropertyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@“MyCellFromStoryboardId”]; 这产生一个空行,没有定义在故事板中的自定义标签。我究竟做错了什么?尽管我越想越多,我认为这在我的情况中并不是问题,正如原始问题中所描述的,因为我还没有滚动,因此不应该有任何重用。但是你是正确的我不需要使用单元格的重用,如果我可以让我的自定义单元格正确显示。 – kos 2013-02-12 01:26:27

+0

我想这是因为在我的initWithStyle的自定义实现中,我将不得不使用dequeueReusableCellWithIdentifier来初始化所有控件与框架为我完成的操作吗?有其他选择吗? – kos 2013-02-12 02:11:53

+0

reuseIdentifier就是这样,并且与故事板ID无关。 – jeka 2013-02-20 16:43:15

相关问题