【问题标题】:Swift How can i take data from custom uicollectionviewcell?Swift 如何从自定义 uicollectionviewcell 中获取数据?
【发布时间】:2019-07-26 13:16:46
【问题描述】:

我有一个如下图所示的表单页面。我应该从这种形式中获取价值。我从底部有一个自定义集合视图。我应该从单元格中获取文本字段值。我怎样才能做到这一点?

我在这些单元格中使用选择器视图。你能给我举个小例子吗?

【问题讨论】:

  • 显示您已经尝试过的内容。

标签: ios swift uicollectionview uicollectionviewcell


【解决方案1】:

问题:“我应该从单元格中获取文本字段值。我该怎么做?”

回答:你不应该那样做。

视图对象用于向用户显示信息和收集输入,而不是用于存储数据。

这对于UICollectionViews 和UITableViews 尤其重要,因为它们都会在用户滚动时根据需要创建和回收单元格。

您应该将您的集合视图设计为具有数据模型对象(通常是结构数组,或用于行和列数据的数组数组)。

当用户在您的文本字段中输入数据并点击返回时,您应该收集更改的值并将它们保存到您的数据模型中。那么您的数据模型始终是最新的,如果您需要获取特定 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() { }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 2019-04-20
    • 2018-01-06
    • 1970-01-01
    • 2017-01-14
    • 2018-02-16
    相关资源
    最近更新 更多