我来找你一个小问题,这可能实际上并不复杂,但我现在已经挣扎了一个小时......
我在TableViewController中定义了一个TableViewCell。这个TableViewCell有三个UIImage和两个textLabel。我实现了以下方法:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return fruits.count
}
(在我看来,它定义了行数)
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "friendListCell")
cellOutlet.nameTextLabel.text = fruits[indexPath.row]
return cell!
}
在第二种方法中," cellOutlet"是定义我的单元格的类的实例,我在其中修改textLabel的一个文本。 "水果"是一个简单的字符串数组,应该逐个显示在我的应用程序的每个单元格中。
编辑很顺利,但在访问相关页面时,应用程序崩溃说
在解包可选值时意外发现nil
我的问题如下:
您是否知道在访问我的textLabel文本方面出了什么问题?
提前致谢!
答案 0 :(得分:2)
如果您使用的是自定义TableViewCell类,则必须
在cellForRow...
中相应地投放单元格(假设名称为MyTableViewCell
)
let cell = tableView.dequeueReusableCell(withIdentifier: "friendListCell" for:indexPath) as! MyTableViewCell
答案 1 :(得分:0)
尝试致电
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "friendListCell")
cell.nameTextLabel.text = fruits[indexPath.row]
return cell!
}
并且在调用cell.nameTextLabel.text = fruits[indexPath.row]
答案 2 :(得分:0)
即使你的自定义UITableViewCell类(例如FruitsCell)有一些标签,标准的UITableViewCell也不会(除了一个,它的'label'属性)。在您的代码中,'cell'属性的类型为UITableViewCell,它没有要访问的cellOutlet或nameTextLabel属性。
如果您在IB中设置自定义单元格,请务必将IB中的所有标签与Swift-File中的代码相关联,例如: FruitsCell.swift,包含FruitsCell类。
然后将ViewControllers委托方法中的'单元格'转换为例如FruitCell而不是UITableViewCell。只有这样,您才能访问在IB中设置的该类的标签。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// casting to your Class
let cell = tableView.dequeueReusableCell(withIdentifier: "friendListCell") as! FruitCell
// accessing that Class' properties
cell.nameTextLabel.text = fruits[indexPath.row]
// returning cell of type FruitCell
return cell!
}