2015-01-08 147 views
0

我有一个代码设计问题给大家。UITextField表格视图单元格 - iOS

我必须建立一个动态表格,这意味着表格不能保证每次载入时都包含相同的字段。

我给出了每个表单必须包含的字段列表,它们都是文本输入。我给出的列表是描述每个字段具有的属性(即名称,isRequired,maxLength,minLength)的基本JSON。

我正在使用UITableViewCell与UITextField的创建窗体。 为了验证并提交表单,我需要对每个单元格或每个单元格的文本字段保留强引用,以便我可以获取为每个字段输入的数据。

如何在保持对每个单元格(或文本字段)的强引用的同时快速创建表单?

我很高兴回答你有任何澄清问题。

+0

不,您不需要保留对单元格或文本字段的强引用,并且事实上,你不应该那样做。输入的数据应该存储在某种数据结构中,该数据结构将从文本字段的didFinishEditing委托方法更新。 – rdelmar

回答

2

而不是保留对单元格的强引用,请保留对表示单元格的模型的强引用。对于每行都是文本字段的表格,模型是一个字符串数组。通过循环遍历JSON来构建它,并为JSON描述的每个表单元素添加一个字符串。

然后你的表数据源就是那个字符串数组。当文本字段的文本发生变化时,更新相应的字符串(从文本字段到数组中的右侧索引有点棘手,但是它经常在SO上进行讨论。我最喜欢的方法是@danh solution here,它可以应用于任何子视图的细胞)。

+0

你是说我应该每次将一个字符输入到文本字段时更新表格视图单元格?这似乎有点密集。 – tentmaking

+0

好吧,我觉得有点愚蠢的发布最后的评论。我现在明白了,我只是更新模型中的字符串,并使用模型来跟踪文本字段中的值。这是一个模型的用途。哈哈,谢谢兄弟。 – tentmaking

+0

很高兴帮助。检查uitextfield的委托协议。您可以随着文本更改或完成编辑(丢失第一响应者)而更新。 – danh

0

你会选择一个动态tableView静态之一。

正如你所见,ios sdk全部是关于MVC模式。

您将以相同的方式分离您的疑虑,使用类模型来描述您的数据。

我最大的建议是你不应该依赖单元格,因为它们被重用。所以不要将你的逻辑与接口组件混合。

0

我不会这样做。
表格滚动时会发生什么? 你真的需要一个表格反映的模型对象,使用表格作为模型是不明智的。声明一个NSMutableDictionary类型或数组类型的属性,使用它来存储数据并在每次修改textField时更新它

相关问题