UITableView Custom Cell无法正常工作

时间:2015-04-18 04:33:35

标签: ios uitableview swift custom-cell

当我尝试创建自定义表格单元格时,我的程序在cellForRowAtIndexPath方法中不断崩溃。我在代码中的每一行都设置了断点,在尝试使用错误 unexpectedly found nil while unwrapping optional value创建单元格变量后代码失败。我之前已多次成功使用自定义表格单元格,并且没有遇到过这个问题。这似乎很简单,但我无法弄清楚出了什么问题。也许xcode中的某些东西改变了我不知道的东西?任何帮助表示赞赏。谢谢!...另外,我确实在viewDidLoad注册了自定义单元格。我也会包含该代码。

var nib = UINib(nibName: "FeedTableViewCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "feedCell")

下面的探针代码:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell:FeedTableViewCell = tableView.dequeueReusableCellWithIdentifier("feedCell", forIndexPath: indexPath) as! FeedTableViewCell

    cell.descriptionLabel.text = "Testing the description label of my cell."

    return cell
}

更新

这个项目和其他有效的项目之间的一个区别是,Xcode现在促使我在之后放一个爆炸(!),而在我从未使用过之前。如果我不添加(!)它会给我错误消息“AnyObject不能转换为FeedTableViewCell

如! FeedTableViewCell - 而不是FeedTableViewCell

FeedTableViewCell类

import UIKit

class FeedTableViewCell: UITableViewCell {

    @IBOutlet weak var descriptionLabel: UILabel!
    @IBOutlet weak var priceLabel: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
        priceLabel.font = UIFont(name: "AvenirNext-Bold", size: 30.0)
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
    }
}

3 个答案:

答案 0 :(得分:4)

花了太多时间试图让它发挥作用。我修改了我的自定义表格单元格,创建了一个全新的单元格,以完全相同的方式设置它,现在一切正常。仍然不知道发生了什么,但我想从中得到的教训是,有时你只需要核对它并重新开始。

答案 1 :(得分:0)

你应该像这样使用

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("feedCell", forIndexPath: indexPath) as FeedTableViewCell


    cell.descriptionLabel.text = "Testing the description label of my cell."

    return cell
}

如需更多帮助,请使用此链接http://shrikar.com/blog/2015/01/17/uitableview-and-uitableviewcell-customization-in-swift/

答案 2 :(得分:-1)

你应该使用

var cell:FeedTableViewCell = tableView.dequeueReusableCellWithIdentifier("feedCell",) as! FeedTableViewCell

NSIndexPath可能会出现此问题。

HTH,享受编码!!