我正在尝试以编程方式在swift中添加UITableViewCells并收到以下错误消息:
2016-05-10 21:58:41.961 appname [28802:2378292] ***由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法在bundle中加载NIB:'NSBundle(loaded)'的名称'了myCell''
我的viewDidLoad
中有以下内容:
let myNib = UINib(nibName: "myCell", bundle: nil)
tableView.registerNib(myNib, forCellReuseIdentifier: "UITableViewCell")
以及func tableView
中的以下内容:
var cell:UITableViewCell! = tableView.dequeueReusableCellWithIdentifier("UITableViewCell", forIndexPath:indexPath)
print("setup cell")
if cell == nil{
print("cell == nib")
let cellnib = [NSBundle.mainBundle().loadNibNamed("myCell", owner:self, options: nil)]
cell = cellnib.first! as! UITableViewCell
}
答案 0 :(得分:2)
我建议您阅读Table View Programming Guide。这是一个很长的,用ObjC写的,但非常值得。
对于您的问题,您不会像这样创建UITableViewCell
。试试这个:
var cell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath:indexPath)
if cell == nil {
print("setup cell")
cell = UITableViewCell(style: .Default, reuseIdentifier: "myCell")
}
答案 1 :(得分:0)
实际上您可以像这样创建表格单元格,但是您需要将该代码放在init中而不是在viewDidLoad中:
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.registerNib(UINib(nibName: "myCell", bundle: nil), forCellReuseIdentifier: Identifier)
}
但请确保您的项目中存在myCell.xib。创建它右键单击左侧的项目目录并选择新文件。然后选择iOS - >来源 - > Cocoa Touch Class。在类名中使用:myCell和Sub Class为UITableViewCell。选中标记还会创建XIB文件: