Swift 如何从自定义 uicollectionviewcell 中获取数据?
Posted
技术标签:
【中文标题】Swift 如何从自定义 uicollectionviewcell 中获取数据?【英文标题】:Swift How can i take data from custom uicollectionviewcell? 【发布时间】:2019-07-26 13:16:46 【问题描述】:我有一个如下图所示的表单页面。我应该从这种形式中获取价值。我从底部有一个自定义集合视图。我应该从单元格中获取文本字段值。我怎样才能做到这一点?
我在这些单元格中使用选择器视图。你能给我举个小例子吗?
【问题讨论】:
显示您已经尝试过的内容。 【参考方案1】:问题:“我应该从单元格中获取文本字段值。我该怎么做?”
回答:你不应该那样做。
视图对象用于向用户显示信息和收集输入,而不是用于存储数据。
这对于UICollectionView
s 和UITableView
s 尤其重要,因为它们都会在用户滚动时根据需要创建和回收单元格。
您应该将您的集合视图设计为具有数据模型对象(通常是结构数组,或用于行和列数据的数组数组)。
当用户在您的文本字段中输入数据并点击返回时,您应该收集更改的值并将它们保存到您的数据模型中。那么您的数据模型始终是最新的,如果您需要获取特定 IndexPath 的值,您只需在模型中查找数据。
【讨论】:
【参考方案2】:如果您知道单元格的 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
但我真的不建议你这样写。请阅读邓肯的回答。
【讨论】:
此解决方案有效。但是“项目:索引”不起作用。当我添加“0 或 1”时它正在工作。 因为“索引”只是您项目的变量。可以是任意整数 我尝试了数组,但它不起作用。我有四个细胞。我如何从每个地方获取数据? 我尝试了您的代码,但索引给了我错误:“无法将 '(Any) -> Int' 类型的值转换为预期的参数类型 'Int'”。顺便说一句,我在我的按钮功能中使用了这段代码。 @objc func handleSaveButton()以上是关于Swift 如何从自定义 uicollectionviewcell 中获取数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中将值从自定义单元格设置/传递到视图控制器
SWIFT:从自定义单元格中的 UIswitch 展开/折叠自定义单元格
如何在 iOS swift 中的 ARSCNView 中显示 uicollection 视图