【问题标题】:send textfield text from inside tableView to outside button将文本字段文本从 tableView 内部发送到外部按钮
【发布时间】:2022-01-15 04:59:34
【问题描述】:

我有一个表格,里面有一个文本字段。我想通过单击按钮发送用户类型。但按钮不在表格内。

所以我使用这个简单的函数将文本从文本字段传递给这个变量:

extension TableViewCell: UITextFieldDelegate {
    
    func textFieldDidChangeSelection(_ textField: UITextField) {
        
        amountFromCell = textField.text!
        print(amountFromCell)
        
    }
    
}

我运行了代码,它会打印我在控制台文本字段中输入的任何内容。但是正如您所见,这个变量是在TableViewCell 中定义的,而不是 Button 所在的位置。 所以我在 TableViewCell 类中创建了另一个变量amountFromCell 来存储数据。

做了这样的事情:

amountFromTable = cell.amountFromCell
        
return cell

最后运行了这段代码..这是我点击按钮的时候:

@IBAction func btnPrintAmount(_ sender: UIButton) {
    print(amountFromTable)
}

但它返回空。

所以我知道我在amountFromcell 中有价值,但不确定在返回单元格时是否使用amountFromTable = cell.amountFromCell 将其添加到amountFromTable

或者 amountFromTable = cell.amountFromCell 在创建单元格时添加 nil 并且它没有从 textField 获取最新值。

我很困惑如何将数据从表内的文本字段发送到表视图外定义的变量。

【问题讨论】:

    标签: ios swift uitableview delegates textfield


    【解决方案1】:

    表格视图单元格与包含它们的表格视图没有紧密耦合。表格视图根据需要创建单元格,然后在它们滚出屏幕时“将它们放入回收站”,并在新单元格在屏幕上滚动时重新使用它们来显示新信息。

    您应该设置代码以在用户输入时从单元格中的视图收集信息并将其保存到您的数据模型中。 (例如文本输入)。如果您不立即收集用户输入,那么当用户将已编辑的单元格滚动到屏幕外时,它可能会丢失。

    有多种方法可以将用户输入从表格视图单元格传回视图控制器,以便您可以将其存储在数据模型中。

    这是一个:

    创建 UITableViewCell 的自定义子类。给它一个 indexPath 属性,以便它知道它的数据属于模型中的哪个位置。

    使用textDidChange(_:atIndexPath:) 之类的方法定义CellDataDidChangeProtocol,以告诉视图控制器用户为单元格输入了新数据(文本字段输入、开关设置等)。为您的单元格提供符合该协议的委托属性.

    在表格视图数据源的cellForRow(at:) 方法中,设置单元格的索引路径并将其委托属性设置为指向视图控制器。让视图控制器实现您的单元委托协议。

    让您的表格视图单元格检测其文本字段中的输入,并将更新后的数据传递给它们的委托。

    在您的视图控制器中,当用户点击发送按钮时,从模型中获取数据并将其发送到需要发送的任何地方。

    【讨论】:

      猜你喜欢
      • 2018-08-21
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多