【发布时间】:2019-07-26 13:16:46
【问题描述】:
我有一个如下图所示的表单页面。我应该从这种形式中获取价值。我从底部有一个自定义集合视图。我应该从单元格中获取文本字段值。我怎样才能做到这一点?
我在这些单元格中使用选择器视图。你能给我举个小例子吗?
【问题讨论】:
-
显示您已经尝试过的内容。
标签: ios swift uicollectionview uicollectionviewcell
我有一个如下图所示的表单页面。我应该从这种形式中获取价值。我从底部有一个自定义集合视图。我应该从单元格中获取文本字段值。我怎样才能做到这一点?
我在这些单元格中使用选择器视图。你能给我举个小例子吗?
【问题讨论】:
标签: ios swift uicollectionview uicollectionviewcell
问题:“我应该从单元格中获取文本字段值。我该怎么做?”
回答:你不应该那样做。
视图对象用于向用户显示信息和收集输入,而不是用于存储数据。
这对于UICollectionViews 和UITableViews 尤其重要,因为它们都会在用户滚动时根据需要创建和回收单元格。
您应该将您的集合视图设计为具有数据模型对象(通常是结构数组,或用于行和列数据的数组数组)。
当用户在您的文本字段中输入数据并点击返回时,您应该收集更改的值并将它们保存到您的数据模型中。那么您的数据模型始终是最新的,如果您需要获取特定 IndexPath 的值,您只需在模型中查找数据。
【讨论】:
如果您知道单元格的 indexPath,则很简单:
let indexPath = IndexPath(item: index, section: 0)
let cell = collectionView.cellForItem(at: indexPath) as? GuestDataCell
let value = cell?.txtDataValue.text
在 cmets 之后编辑:
不是最佳实践,但如果您需要:
var i = 0
var numberOfCells = 4
var values: [String]!
while i < numberOfCells {
let indexPath = IndexPath(item: index, section: 0)
let cell = collectionView.cellForItem(at: indexPath) as? GuestDataCell
let value = cell?.txtDataValue.text
values.append(value)
i += 1
}
但我真的不建议你这样写。请阅读邓肯的回答。
【讨论】: