在函数swift 3中发送不同的笔尖

时间:2017-03-10 17:54:17

标签: swift uitableview swift3 uicollectionviewcell xib

我有一个tableView需要包含两个不同的视图,第一个名称是 CustomTableViewCell 第二个是 CustomDeliveryTableViewCell 我希望我的变量取两个单元格,我不明白这个错误。 enter image description here 这是我的功能

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

    var cell: UITableViewCell
    cell = Bundle.main.loadNibNamed("CustomTableViewCell", owner: self, options: nil)?.first as! UITableViewCell

    if (!self.appReady)
    {
        return cell
    }
    let arrayOfCard = self.selectedCard(section: indexPath.section, row: indexPath.row)
    let json:JSON = JSON(arrayOfCard)
    if (json[0]["cards"][indexPath.row]["category"] == "delivery")
    {
        cell = Bundle.main.loadNibNamed("CustomDeliveryTableViewCell", owner: self, options: nil)?.first as! CustomTableViewCell
    }
    cell = fillCell(cell: cell, json: json, index: indexPath.row)
    return cell
}

我的功能fillCell是那样的原型

  

func fillCell(cell:CustomTableViewCell,json:JSON,index:Int) - >   CustomTableViewCell

修改

这里是实际fillCell函数的代码

    func fillCell(cell: UITableViewCell, json:JSON, index:Int) -> UITableViewCell {
    if (json[0]["cards"][index]["category"] == "train")
    {
        if let type = json[0]["cards"][index]["category"] as JSON?
        {
            cell.labelType.text = type.string
        }
        if let departureStation = json[0]["cards"][index]["train"]["departure"]["station"] as JSON?
        {
            cell.labelDepartureStation.text = departureStation.string
        }
    // Do some code
    }
    else if (json[0]["cards"][index]["category"] == "delivery")
    {
        //Do some code
        return cell
    }
    else{
        //Do some code
        return cell
    }
}

1 个答案:

答案 0 :(得分:0)

您的初始分配会创建cell类型CustomDeliveryTableViewCell

if块中,您尝试将CustomTableViewCell分配给同一个变量。这仅在CustomTableViewCellCustomDeliveryTableViewCell

的子类时才有效

当您致电fillCell(时,预计CustomTableViewCellcellCustomDeliveryTableViewCell

如果您声明var cell: UITableViewCell,则可以为其指定任一类型。