2015-01-08 144 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時更新它

相關問題