返回UITableView的值
我有UITableView和contect是动态原型。返回UITableView的值
所以我有5个单元格,每个单元格都有自己的标识符。 所以当我尝试返回(cellForRowAt) 中的值,它会让我。
请帮忙吗?
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if (indexPath.section) == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as UITableViewCell!
// cell?.textLabel!.text = objectsArray[indexPath.section].sectionObjects[indexPath.row]
return cell!
}
else if (indexPath.section) == 2 {
let cell3 = tableView.dequeueReusableCell(withIdentifier: "cellThree") as UITableViewCell!
return cell3!
}
else if (indexPath.section) == 3 {
let cell4 = tableView.dequeueReusableCell(withIdentifier: "cellFour") as UITableViewCell!
return cell4!
}
else if (indexPath.section) == 4 {
let cell5 = tableView.dequeueReusableCell(withIdentifier: "cellFive") as UITableViewCell!
return cell5!
}
return cell!
}
谢谢!
新的更新: -
从而呈现给我的错误的是(使用未解决的标识符“细胞”)的 所以,当我在最后(!恢复单元)返回它显示了这个error.However,如果我删除该行,它会向我显示另一个错误,要求我返回一个值
如此底线我很满意我应该在(cellForRowAt)结尾处返回什么值。
返回值:
此方法只能每次它被称为一次返回一个细胞。每当新单元即将出现在屏幕上时,该方法将被调用。在方法签名看看:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
这UITableViewCell
末是预期的返回值,在这种情况下,它是一个单细胞。
错误
让我们来看看你的错误:
Use of unresolved identifier 'cell'
“未解决的标识符”意味着它已经不知道什么是“细胞”,是因为它没有在当前范围内声明。但是不要在这个方法中声明cell
?是的,但他们在一个单独的范围内。变量作用域定义了变量的存在时间以及可以看到的位置。当您看到一组新的大括号{}
(您的if
每个语句声明)时,您可以知道何时声明新变量作用域。在每组花括号中声明的变量只能通过括号内的代码来看到。一旦执行离开括号,那些变量就消失了。让我们来看看哪些变量是你最后的return
声明范围之内可见通过去除您if
语句创建的范围:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return cell!
}
现在很明显,cell
不会在返回的点存在。您需要在方法的范围内声明cell
并给它一些价值。请注意,拆解你的单元可选项的力量可能会导致运行时崩溃,因为该方法不能返回nil
。 tableView.dequeueReusableCell()
返回nil
时,您需要创建单元格。
编辑:我刚刚意识到你没有使用dequeueReusableCellWithIdentifier
中的for indexPath
参数。使用它,否则它是错误的。请参阅:
https://developer.apple.com/documentation/uikit/uitableview/1614878-dequeuereusablecellwithidentifie
https://www.natashatherobot.com/ios-using-the-wrong-dequeuereusablecellwithidentifier/
@Nawaf你不能从任何函数返回多个值,所以你不能从一个cellForRow
调用返回多个单元格。你可能会误解cellForRowAtIndexPath
的工作原理。现在你的代码没有在单元格中填充任何东西。
Use of unresolved identifier 'cell'
此外,您的错误可能由于多种原因而发生。首先,检查你的视图控制器是否正确地分配到故事板中的视图控制器,并且你已经在故事板中分配了一个reuseIdentifier。
见链接,了解更多信息: https://developer.apple.com/documentation/uikit/uitableviewdatasource/1614861-tableview?language=objc
How does cellForRowAtIndexPath work?
另外一个侧面说明了代码质量:不要逼投的电池,因为这可能会导致意外的错误。使用条件约束,而不是:
guard let cell = tableView.dequeueReusableCellWithIdentifier(...) as? UITableViewCell else { // What to do when the cast failed }
祝你好运:)
当演员阵容失败时你会怎么做? 'cellForRow'是我使用强制转换的情况之一;在运行时没有明智的方式来处理失败,如果强制倒下,在开发过程中会很快崩溃,并且可以找出为什么找不到单元格 – Paulw11
如果转换失败,您可能有问题,那就是分析框架可以报告某个活动应用程序崩溃。然后,你将能够检查这是否是一个用户,并且崩溃不是你的目的,或者看看是否有明显的错误必须修复。等等。这只是一个偏好问题。是的,在开发过程中,更容易看到力量崩溃=错误。 –
那么,怎么了?如果没有告诉我们什么不工作/你得到了什么错误以及预期的行为是什么,我们无法提供帮助。 –
你确切的问题是什么?这是没有意义的“返回价值UITableView ” –
我刚刚更新了我的问题。对不起,关于 – Nawaf