我正在尝试设置一个表视图,它将根据顶部的分段控制器更改单元格。但是,在重新加载tableview时尝试更改单元格时,我收到了返回函数错误,而实际上我有一个返回函数。我该怎么做才能解决这个问题?
java.sql.Date.value(dateString)
答案 0 :(得分:4)
您应该返回一个单元格。在上面的代码中,如果两个条件都失败,则不会返回任何内容。所以提出警告。只需删除第二个“if”条件并使用else案例如下:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if friendSelector.selectedSegmentIndex == 0 {
print("0")
cell = self.friendsTable.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! FriendsTableViewCell
cell.nameLabel.text = friends[indexPath.row]
cell.bacLabel.text = String(friendsBac[indexPath.row])
cell.statusImageView.image = friendsImage[indexPath.row]
return cell
}
else {
print("1")
celladd = self.friendsTable.dequeueReusableCell(withIdentifier: "celladd", for: indexPath) as! FriendsAddTableViewCell
celladd.nameLabel.text = requested[indexPath.row]
celladd.statusImageView.image = UIImage(named: "greenlight")
return celladd
}
}
答案 1 :(得分:3)
你有两个if语句都可能不是真的,所以你必须在所选索引既不是0或1的情况下返回一个单元格。
if friendSelector.selectedSegmentIndex == 0 {
...
return cell
}
else if friendSelector.selectedSegmentIndex == 1 {
...
return celladd
}
return UITableViewCell()
我更喜欢将switch语句用于此类事情。
switch friendSelector.selectedSegmentIndex {
case 0:
...
return cell
case 1:
...
return celladd
default:
return UITableViewCell()
}
答案 2 :(得分:1)
非常明显。如果条件,你有两个返回语句。如果你的'if'条件都没有被执行怎么办?该案件没有退货声明。这就是编译器抱怨的原因