我迷路了。我搜索并搜索,找不到我的自定义单元格未显示的原因。
// ProfileCell.swift:
import UIKit
import QuartzCore
class ProfileCell: UITableViewCell {
@IBOutlet weak var profileNameLabel: UILabel!
@IBOutlet weak var profilePictureView: UIImageView!
}
正常显示第二个默认TableViewCell。我在Interface Builder或任何错误中没有遗漏约束。在ProfileCell.xib标识选项卡中选择ProfileCell作为自定义类。
// MoreTableViewControllerIB.swift
import UIKit
class MoreTableViewControllerIB: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// this cell is missing
if indexPath.row == 0 {
tableView.register(UINib(nibName: "ProfileCell", bundle: nil), forCellReuseIdentifier: "ProfileCell")
let cell = tableView.dequeueReusableCell(withIdentifier: "ProfileCell", for: indexPath) as! ProfileCell
cell.profileCommentLabel.text = "Test Comment Label"
cell.profilePictureView.image = UIImage(named:"profile_picture_test")
return cell
// this cell is displayed perfectly
}else if indexPath.row == 1 {
let cell = tableView.dequeueReusableCell(withIdentifier: "statisticsCell") ?? UITableViewCell(style: .default, reuseIdentifier: "statisticsCell")
cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator
cell.textLabel?.text = "Statistics"
cell.imageView.image = UIImage(named:"statistics")
return cell
// has to return a cell in every scenario
}else{
let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as UITableViewCell
return cell
}
}
}
答案 0 :(得分:5)
tableView.register(UINib(nibName: "ProfileCell", bundle: nil), forCellReuseIdentifier: "ProfileCell")
在viewDidLoad或viewWillApppear
中添加此行答案 1 :(得分:0)
所以我发现了我的错误。非常愚蠢,我花了半天时间:
细胞已经显示,但默认高度不足以看到它。我以为会使用.xib中的设置高度。显然不是。 所以我补充说:
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == 0 {
return 192 // the height for custom cell 0
}
}
答案 2 :(得分:0)
在我的情况下,我必须另外注册 nib 以查看我的手机:
myTableView.register(UINib(nibName: "nibwithcell", bundle: nil), forCellReuseIdentifier: "cell") // you need to register xib file