在Swift中创建静态单元格

时间:2015-04-25 12:37:36

标签: ios uitableview swift

我试图在UITableViewCell中创建静态单元格。我首先在Interface Builder中添加了2个单元格,并为其指定了标识符titlenews。然后我创建了一个包含这两个标识符的数组,并将其添加到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
}

2 个答案:

答案 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")
}