Ios 自定义UITableViewCell数据在滚动时重复
我正在使用自定义的tableview单元格。我有两个部分,第一个是包含动态高度textview的自定义单元格,第二个是包含标签的自定义单元格,第一行有StartDate,第二行有EndDate。选择第二部分(DateCell)中的行时,将显示DatePickerCell类型单元格中的日期选择器。 StartDate和EndDate行都使用DateCell类型的自定义单元格 问题是当滚动tableview时,相同的数据同时出现在StartDate和EndDate中。 我正在从故事板加载单元格,因此单元格不会为零。 我对StartDate和EndDate使用了不同的重用标识符,但问题仍然存在 另外,在这种情况下,有人能建议在PrepareForuse方法中应该做什么吗 请在下面查找代码Ios 自定义UITableViewCell数据在滚动时重复,ios,swift,uitableview,Ios,Swift,Uitableview,我正在使用自定义的tableview单元格。我有两个部分,第一个是包含动态高度textview的自定义单元格,第二个是包含标签的自定义单元格,第一行有StartDate,第二行有EndDate。选择第二部分(DateCell)中的行时,将显示DatePickerCell类型单元格中的日期选择器。 StartDate和EndDate行都使用DateCell类型的自定义单元格 问题是当滚动tableview时,相同的数据同时出现在StartDate和EndDate中。 我正在从故事板加载单元格,因此
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) ->Int{
if section == 1 {
if isDatePickerVisible == true {
return 3
}
return 2
}
return 1
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var identifier = ""
switch indexPath.section {
case 0 : identifier = kTextViewCellID
case 1 :
if datePickerIndexPath == indexPath && isDatePickerVisible == true {
identifier = kDatePickerCellID
}
else if indexPath.row == 0 {
identifier = kStartDateCellID
}
else {
identifier = kEndDateCellID
}
default: identifier = ""
}
let cell = tableView.dequeueReusableCellWithIdentifier(identifier, forIndexPath: indexPath)
if let c = cell as? TextCell {
//do something
}
//Both StartDate and EndDate are DateCell type
else if let c = cell as? DateCell {
c.dateLable.text = … //some text
c.dateValue?.text = … // some date in string format
}
else if let c = cell as? DatePickerCell {
//show DatePicker
}
return cell
}
class DateCell : UITableViewCell {
@IBOutlet weak var dateValue: UITextField?
@IBOutlet weak var dateLable: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
func setSomeColor() {
dateValue?.textColor = UIColor.redColor()
}
func clearDateValue (clear: Bool) {
//...
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
对“c”变量进行更改,但返回“cell”变量。您应该返回“c”变量或对“cell”变量进行更改。通过快速查看,我认为这对于查看如何获取填充单元格标签的数据非常有用。您只为我们显示了“…”部分,其中指定了标签的日期。这似乎是这个谜题的一个重要部分。前面的评论是正确的,特别是因为在配置单元格之前使用的条件(
as?DateCell
)不足以区分开始日期单元格和结束日期单元格。因为单元格是一个NSObject(类),c将指向与单元格相同的对象,所以这部分代码不是问题所在。