首先,道歉,但我是所有这一切的新手(iOS Dev& Swift)。
我有一些自动加载到tableview中的自定义单元格。我的一个单元格是一个数据选择器,当用户更改日期时,我想将更新的数据发送到其他单元格中,但我很难过。请帮助。
答案 0 :(得分:0)
由于您的单元格已动态加载到表格中,因此无法直接处理特定单元格。您应该在用户选择日期时尝试更改基础数据源,并调用table.reloadData()
答案 1 :(得分:0)
假设单元格已加载且可见,您可以将一个单元格的引用传递给另一个单元格,但是您需要在自定义单元格中创建几个方法。
在我的例子中,我有两个自定义单元格,一个名为CellBirthday的单元格,其中包含名为birthDateLabel的标签,以及一个包含名为CellDatePicker的DatePicker的单元格。我希望每次DataPicker值更改时都更新birthDateLabel。
我将首先加载单元格并在CellDatePicker中存储CellBirthday的引用,然后当日期选择器更改时,我将更新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)
}
}
}