[英]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.