集合视图中有多个Tableview

时间:2018-06-27 08:05:21

标签: ios swift uitableview

我正在处理集合视图中的多个表视图。我关注了this文章。但是在cellForRowAt indexPath方法内部,我得到以下错误。

  

类型'UITableViewCell'的值没有成员'lblLab'
  类型'UITableViewCell'的值没有成员'lblLab'
  类型'UITableViewCell'的值没有成员'lblMedicine'

我已经为所有三个表视图单元格创建了单独的类,其中已经提到了所有三个标签。

下面是我的代码,该代码写在collection-view单元类中。

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    var cell : UITableViewCell;
    if tableView == tableLAB {
        cell = tableView.dequeueReusableCell(withIdentifier: "labCell", for: indexPath) as! LabTableCell;
        cell.lblLab!.text = arr1[indexPath.row];
    } else if tableView == tableDIAGNOSIS {
        cell = tableView.dequeueReusableCell(withIdentifier: "diagnosisCell", for: indexPath) as! DiagnosisTableCell;
        cell.lblDiagnosis!.text = arr1[indexPath.row];
    } else if tableView == tableMEDICINE {
        cell = tableView.dequeueReusableCell(withIdentifier: "medicineCell", for: indexPath) as! MedicineTableCell;
        cell.lblMedicine!.text = arr1[indexPath.row];
    }

    return cell;
}

你能告诉我我在做什么错吗?预先感谢。

2 个答案:

答案 0 :(得分:2)

问题是您试图将通过父类初始化的对象强制转换为子类,这是不可能的,您可以做的是确保所有情况下都具有条件​​运算符,即

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    if(tableview == a){
    //This is a conditional statement
    }
    else if(tableview == b){
    //This is a conditional statement
    }
    else{
    //This is a conditional statement
    }

    //no need to return anything here as your conditional operators are handling all return //cases
    }

并在每个条件语句中,声明并初始化您的唯一单元格类型,然后将其返回。

let cell : CellType = tableView.dequeueReusableCell(withIdentifier: "CellType", for: indexPath) as! CellType;
return cell;

答案 1 :(得分:1)

您可以尝试

  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    if tableView == tableLAB {
        let cell = tableView.dequeueReusableCell(withIdentifier: "labCell", for: indexPath) as! LabTableCell;
        cell.lblLab!.text = arr1[indexPath.row];
         return cell;
    } else if tableView == tableDIAGNOSIS {
       let cell = tableView.dequeueReusableCell(withIdentifier: "diagnosisCell", for: indexPath) as! DiagnosisTableCell;
        cell.lblDiagnosis!.text = arr1[indexPath.row];
         return cell;
    } else {
        let cell = tableView.dequeueReusableCell(withIdentifier: "medicineCell", for: indexPath) as! MedicineTableCell;
        cell.lblMedicine!.text = arr1[indexPath.row];
         return cell;
    }


}