簡體   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