我使用自定义tableview单元格。我有2个部分,第一部分是自定义单元格,其中包含动态高度textview,第二部分自定义单元格包含带有第一个具有StartDate和第二个具有EndDate的第一个标签。当选择第二部分(DateCell)中的行时,将显示日期选择器,该日期选择器位于DatePickerCell类型的单元格中。 StartDate和EndDate行都使用DateCell类型的自定义单元格。
问题是当滚动tableview时,StartDate和EndDate中出现相同的数据。 我从故事板加载单元格,因此单元格不会为零。 我在StartDate和EndDate中使用了不同的reuseidentifier,但问题仍然存在。
另外,在这种情况下,任何人都可以建议在prepareForReuse方法中应该做些什么。
请找到以下代码。
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)
}
}
答案 0 :(得分:0)
您对" c"进行更改变量,但返回" cell"变量。你应该回来" c"变量或对" cell"进行更改变量