我试图在UITableViewCell
中创建静态单元格。我首先在Interface Builder中添加了2个单元格,并为其指定了标识符title
和news
。然后我创建了一个包含这两个标识符的数组,并将其添加到cellForRowAtIndexPath
。但是我一直收到以下错误:
'unable to dequeue a cell with identifier title - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'
数组
var menuItems = ["title", "news"]
tableView
委托方法
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Potentially incomplete method implementation.
// Return the number of sections.
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete method implementation.
// Return the number of rows in the section.
return 2
}
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 64
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(menuItems[indexPath.row], forIndexPath: indexPath) as! UITableViewCell
cell.backgroundColor = UIColor(white: 0.2, alpha: 1.0)
var bottomView: UIView = UIView(frame: CGRectMake(0, cell.frame.height-1, cell.frame.width, 1))
bottomView.backgroundColor = UIColor(white: 0.2, alpha: 0.15)
cell.contentView.addSubview(bottomView)
return cell
}
答案 0 :(得分:2)
您似乎必须手动为单元格注册UITableViewCell
类。
你可以通过调用
tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: menuItems[indexPath.row])
<{1}} viewDidLoad()
cellForRowAtIndexPath
函数UITableViewDataSource
函数中的
答案 1 :(得分:1)
与错误消息描述类似,如果您将它们创建为空UI文件,则必须注册它们。这可以简单地放在viewDidLoad函数中。
override func viewDidLoad() {
super.viewDidLoad()
var nib = UINib(nibName: "OrangeCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "oranges")
var nib2 = UINib(nibName: "AppleCell", bundle: nil)
tableView.registerNib(nib2, forCellReuseIdentifier: "apples")
}