自定义TableView错误

时间:2017-07-30 02:44:27

标签: arrays swift tableview custom-cell

我正在尝试创建自定义表视图,但偶然发现每个代码。截至目前,我有以下内容。它很乱,可能是错的,但有人可以帮忙吗?

另外,我一直收到错误代码

  

在展开可选值时意外发现nil

=query('TAB1'!A:B,"Select A,B")

4 个答案:

答案 0 :(得分:0)

错误发生在以下行,因为它无法强制解包CustomCell

let cell = self.tableView.dequeueReusableCell(withIdentifier: "CustomCell") as! CustomCell

由于您可能正在使用Nib作为自定义单元格,因此首先应在viewDidLoad中注册它。

let nib = UINib(nibName: YOUR_CUSTOM_CELL_NIB_NAME, bundle: nil)
tableView.register(nib, forCellReuseIdentifier: "CustomCell")

答案 1 :(得分:0)

好像你忘了在自定义单元格的Xib文件的属性检查器中定义标识符(CustomCell)。因此,当你正在解开武力时,你会变得零。还要避免强行打开包装以避免碰撞。重构了代码: -

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
 guard let cell = self.tableView.dequeueReusableCell(withIdentifier: "CustomCell") as? CustomCell else {return UITableViewCell()}
  cell.images.image = photo[indexPath.row]
  cell.name.text = names[indexPath.row]
  cell.number.text = numbers[indexPath.row]
  return cell
 }

答案 2 :(得分:0)

首先请不要用多个数组填充你的tableview。这些阵列很容易失去同步并导致崩溃。理想情况下,您应该创建一个名称,年龄和照片作为其元素的struct类。然后你应该有一个struct类数组来填充你的表视图。

在你的名字数组中你有9个元素,而你的图像数组有8个元素。这导致您的应用程序崩溃,因为indexpath方法的行的单元格无法找到第9个图像。

cell.images.image = photo[indexPath.row]

答案 3 :(得分:0)

所以我接受了一些所有的建议,当我运行下面的代码时,我得到零错误但是在模拟器中,它显示一个空的tableView,我放在tableView上面的图像是来自另一个的另一个图像查看控制器。我不知道它是代码还是其他东西。

    let nib = UINib(nibName: "CustomCell", bundle: nil)
    tableView.register(nib, forCellReuseIdentifier: "Cell")
}

public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return names.count
}

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let cell = self.tableView.dequeueReusableCell(withIdentifier: "Cell") as? CustomCell else {return UITableViewCell()}
    cell.images.image = photo[indexPath.row]
    cell.name.text = names[indexPath.row]
    cell.numbers.text = numbers[indexPath.row]
    return cell

和我的CustomCell

导入UIKit

class CustomCell:UITableViewCell {

@IBOutlet weak var images: UIImageView!
@IBOutlet weak var name: UILabel!
@IBOutlet weak var numbers: UILabel!



override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

}