我正在尝试使用.xib文件中的自定义UITableViewCell
在我有UITableView的ViewController中,我已经做了以下事情:
Ctrl +在Table Builder中将tableViewDataSource和tableViewDelegate拖到此View Controller。
这段代码:
import UIKit
class ResultsFoundViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.dataSource = self;
self.tableView.delegate = self;
//Register my Custom Cell
let customCellName = String(describing: ResultsFoundTableViewCell.self);
let customCellNib = UINib.init(nibName: customCellName, bundle: nil);
self.tableView.register(customCellNib, forCellReuseIdentifier: customCellName);
}
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5;
}
// MARK: UITableViewDataSource Functions
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ResultsFoundTableViewCell", for: indexPath) as! ResultsFoundTableViewCell;
cell.lbStoreName.text = "Name";
return cell;
}
}
在CustomCell中,我只有一个标签,使其更简单:
import UIKit
class ResultsFoundTableViewCell: UITableViewCell {
@IBOutlet weak var lbStoreName: UILabel!
}
我得到的错误是:
由于未捕获的异常而终止应用 'NSInternalInconsistencyException',原因:'无效的nib已注册 对于标识符(ResultsFoundTableViewCell) - nib必须完全包含 一个顶级对象,必须是UITableViewCell实例'
你知道为什么会这样吗?
答案 0 :(得分:0)
出现此问题的原因是您必须将所有UI组件放在 cell-> contentView 中,如果任何元素不在其中,则nib注册将失败
还可以在不描述
的情况下进行nib声明 let customCellNib = UINib.init(nibName: "nibClassName", bundle: nil);
self.tableView.register(customCellNib, forCellReuseIdentifier: customCellName);
此处为String(describing
let customCellName = String(describing: ResultsFoundTableViewCell.self);
为此字符串内容添加可选项,如此可选(" nibClassName")