为什么调用第二个return语句以及为什么我收到返回错误?

时间:2016-01-29 04:52:40

标签: ios swift uitableview

我有两个根本没有相关的uitableviews,但它们是相同的视图。动物tableview显示信息,但animallocation不显示任何内容。我在第二个if语句的第二个return语句中放了一个断点,但是程序没有停止。我也遇到了错误(见下文)。我该如何解决?第一个if语句有效。 animallocationarray填充它打印(" Africa"," India"," South America")。我收到错误http://puu.sh/mNK2J/549dde1225.png

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    if(tableView == animal){
     var cell: animalCell = self.reviews.dequeueReusableCellWithIdentifier("Cell") as! animalCell
    cell.box.text = animalarray[indexPath.row]
    if(indexPath.row % 2 == 0){
        cell.backgroundColor = RGB("ffffff")


    }else{
        cell.backgroundColor = RGB("F98233")

    }


    return cell

    }
    if(tableView == animallocation){
        var cell: location = self.reviews.dequeueReusableCellWithIdentifier("location") as! location
        cell.label.text = animallocatioarray[indexPath.row]
        if(indexPath.row == 0){
            cell.label.textColor = RGB("fffff")

        }

        if(indexPath.row != 0){
            cellvs.vslabel.textColor = RGB("f52654")

        }


        return cell //placed a breakpoint here but nothing happens 
    }

}

3 个答案:

答案 0 :(得分:0)

你错过了案例默认。你可以编辑

if(tableView == animal){
 var cell: animalCell = self.reviews.dequeueReusableCellWithIdentifier("Cell") as! animalCell
cell.box.text = animalarray[indexPath.row]
if(indexPath.row % 2 == 0){
    cell.backgroundColor = RGB("ffffff")


}else{
    cell.backgroundColor = RGB("F98233")

}


return cell

}
if(tableView == animallocation){
    var cell: location = self.reviews.dequeueReusableCellWithIdentifier("location") as! location
    cell.label.text = animallocatioarray[indexPath.row]
    if(indexPath.row == 0){
        cell.label.textColor = RGB("fffff")

    }

    if(indexPath.row != 0){
        cellvs.vslabel.textColor = RGB("f52654")

    }


    return cell //placed a breakpoint here but nothing happens 
}

要:

if(tableView == animal){
 var cell: animalCell = self.reviews.dequeueReusableCellWithIdentifier("Cell") as! animalCell
cell.box.text = animalarray[indexPath.row]
if(indexPath.row % 2 == 0){
    cell.backgroundColor = RGB("ffffff")


}else{
    cell.backgroundColor = RGB("F98233")

}


return cell

}

var cell: location = self.reviews.dequeueReusableCellWithIdentifier("location") as! location
 cell.label.text = animallocatioarray[indexPath.row]
 if(indexPath.row == 0){
     cell.label.textColor = RGB("fffff")

 }

 if(indexPath.row != 0){
    cellvs.vslabel.textColor = RGB("f52654")

 }


 return cell //placed a breakpoint here but nothing happens 

答案 1 :(得分:0)

该函数必须返回UITableViewCell。在您的代码中,您有两个if语句。如果它们都失败,则不会执行return语句。这就是你看错的原因 - 如果代码路径没有返回所需的类型,那就是编译错误。

在您的情况下,两个if语句中的一个将始终为真,但编译器无法知道。如果您将第二个重新编码为else而不是另一个if,则不会有任何代码路径不会返回值。即。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    if (tableView == animal) {
        // animal code
        return cell
    } else { // i.e. if (tableview == animallocation)
        // animallocation code
        return cell
    }

}

答案 2 :(得分:0)

将以下代码替换为您的tableview:cellForRowAtIndexPath:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    if(tableView == animal){
         var cell: animalCell = self.reviews.dequeueReusableCellWithIdentifier("Cell") as! animalCell
         cell.box.text = animalarray[indexPath.row]
         if(indexPath.row % 2 == 0){
             cell.backgroundColor = RGB("ffffff")
         }else{
             cell.backgroundColor = RGB("F98233")
         }
         return cell
    }
    else{
        var cell: location = self.reviews.dequeueReusableCellWithIdentifier("location") as! location
        cell.label.text = animallocatioarray[indexPath.row]
        if(indexPath.row == 0){
            cell.label.textColor = RGB("fffff")
        }
        else if(indexPath.row != 0){
            cellvs.vslabel.textColor = RGB("f52654")
        }
        return cell //placed a breakpoint here but nothing happens 
    }
}

在你的情况下,你将在if条件下返回单元格, 但我们也要考虑如果条件不正确的情况, 即是其他部分。