滚动

时间:2016-01-26 19:01:47

标签: ios swift uitableview

我使用自定义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)
}
}

1 个答案:

答案 0 :(得分:0)

您对" c"进行更改变量,但返回" cell"变量。你应该回来" c"变量或对" cell"进行更改变量