Swift,防止tableview单元可用

时间:2016-05-21 04:24:07

标签: swift tableview reusability tableviewcell

如何解决表视图数据重叠的问题? 我搜索了一些Object C版本的答案,但它似乎不适用于Swift。我试图让cell == nil,但它给了我一个错误

      func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
    let current_patient = patients[indexPath.row]
    let cell = myTable.cellForRowAtIndexPath(indexPath) as! PatientTableViewCell
    if (cell){
        let cell = myTable.dequeueReusableCellWithIdentifier("patientCell") as! PatientTableViewCell
    }
    let cell = myTable.dequeueReusableCellWithIdentifier("patientCell", forIndexPath: indexPath) as! PatientTableViewCell
    if(cell != nil){
        var subviews = cell.contentView.subviews
        subviews.removeAll()
    }
   //configure cell
   let type = current_patient.enrollable_type
   cell.patientTypelbl.text = type
   return cell
   }

经过两天的挣扎,我终于明白了。解决这个问题的关键是找到哪个细胞已经被重新开始。我现在正在做的是给单元格一个var标识符。

    class PatientTableViewCell: UITableViewCell {

@IBOutlet weak var followupBtn: UIButton!
@IBOutlet weak var viewBtn: UIButton!
@IBOutlet weak var titleType: UILabel!
@IBOutlet weak var titleID: UILabel!
@IBOutlet weak var patientTypelbl: UILabel!
@IBOutlet weak var patientIDlbl: UILabel!

**var identifier = false**
    }

     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
    let current_patient = patients[indexPath.row]

    var cell = myTable.dequeueReusableCellWithIdentifier("patientCell") as! PatientTableViewCell
           if(cell.identifier == true){
        cell = myTable.dequeueReusableCellWithIdentifier("patientCell") as! PatientTableViewCell
    }
    //config cell
    cell.identifier = true   //important

我希望它可以帮助别人。 :)

1 个答案:

答案 0 :(得分:0)

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
    let current_patient = patients[indexPath.row]
    let cell: PatientTableViewCell! = tableView.dequeueReusableCellWithIdentifier("patientCell") as? PatientTableViewCell

    //configure cell
    let type = current_patient.enrollable_type
    cell.patientTypelbl.text = type
    return cell
}