繁体   English   中英

在Swift动态表中的自定义单元格之间移动数据

[英]Moving data between custom cells in a dynamic table in Swift

首先,道歉,但我是所有新手(iOS Dev&Swift)。

我有许多自定义单元格,可以动态加载到表格视图中。 我的一个单元格是一个数据选择器,当用户更改日期时,我想将更新的数据发送到其他单元格中的一个,但是我很困惑。 请帮助。

由于单元格是动态加载到表中的,因此无法直接寻址特定单元格。 您应该在用户选择日期时尝试更改基础数据源,然后调用table.reloadData()

假设单元格已加载并且可见,您可以将一个单元格的引用传递给另一个单元格,但是您需要在自定义单元格中创建几个方法。

在我的情况下,我有两个自定义单元格,一个名为CellBirthday的单元格,其中包含一个名为birthDateLabel的标签,一个单元格,其名称为DatePicker,名为CellDatePicker。 我想每次DataPicker值更改时更新birthDateLabel。

我将首先加载单元格并将CellBirthday的引用存储在CellDatePicker中,然后当日期选择器更改时,我将在CellBirthday中更新标签值。 这是加载两个单元的相关代码片段。 在此示例中,我对单元格标记和类名称使用相同的名称,例如CellBirthday既是情节提要中指定的单元格标记和类名称:

    let birthdayCell = tableView.dequeueReusableCell(withIdentifier: "CellBirthday") as! CellBirthday
    let datePickerCell = tableView.dequeueReusableCell(withIdentifier: "CellDatePicker") as! CellDatePicker
    datePickerCell.setBirthdayCell(BirthdayCell: birthdayCell)

这是自定义类:

class CellBirthday: UITableViewCell {

    @IBOutlet fileprivate weak var birthDateLabel: UILabel!

    var birthdayText: String? {
        didSet {
            birthDateLabel.text = birthdayText
        }
    }
}

class CellDatePicker: UITableViewCell {

    @IBOutlet fileprivate weak var datePicker: UIDatePicker!

    var birthdayCell: CellBirthday?

    func setBirthdayCell(BirthdayCell birthdayCell: CellBirthday) {
        self.birthdayCell = birthdayCell
    }

    func getDateString(FromPicker picker: UIDatePicker? = nil) -> String {

        var dateText: String = ""

        if picker != nil {
            let dateFormatter = DateFormatter()
            dateFormatter.setLocalizedDateFormatFromTemplate("MMMMdy")
            dateText = dateFormatter.string(from: picker!.date)
        }
        return dateText
    }

    @IBAction func datePickerValueChange(_ sender: UIDatePicker) {
        if birthdayCell != nil {
            birthdayCell!.birthdayText = getDateString(FromPicker: sender)
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM