使用在swift中的xib中创建的自定义tableViewCells

时间:2014-11-10 17:15:25

标签: ios uitableview swift interface-builder

我正在尝试在界面构建器中创建一个自定义tableview单元格并在swift中创建的tableview中使用它,控制器中持有tableview的相关代码就像休闲一样:

class SearchesMainViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    @IBOutlet var contentTableView: UITableView?

    override func viewDidLoad(){
        super.viewDidLoad()
        self.navigationItem.title = "Search"
        self.contentTableView?.registerNib(UINib(nibName: "SingleSearchTableViewCell", bundle: nil), forCellReuseIdentifier: SingleSearchTableViewCellController.reuseID())
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
        var cell = tableView.dequeueReusableCellWithIdentifier(SingleSearchTableViewCellController.reuseID(), forIndexPath: indexPath) as SingleSearchTableViewCellController
        return cell
    }

Cell本身非常简单,有4个标签和一个自定义类:

class SingleSearchTableViewCellController:UITableViewCell {

@IBOutlet var dateMonthLable : UILabel?
@IBOutlet var dateDayLable : UILabel?
@IBOutlet var yearLable : UILabel?
@IBOutlet var makeModelLable : UILabel?

var search : Search

class func reuseID() -> String{
    return "SingleSearchTableViewCellType"
}

override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
    search = Search()
    super.init(style: style, reuseIdentifier: reuseIdentifier)
}

override func awakeFromNib() {
    super.awakeFromNib()
}

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

}
required init(coder aDecoder: NSCoder) {
    search = Search()
    super.init()
}

init(previousSearch s : Search){
    search = s
    super.init()
}

override init(frame: CGRect) {
    search = Search()
    super.init(frame: frame)
}

如果我没有提供足够的数据,请随时提出,我们提前感谢您的帮助。有关swift与xib交互的信息似乎尚未广泛应用。

修改 我删除了我的自定义类,我的单元格的绑定看起来像这样: enter image description here 进行这些更改后,错误读作休闲: 由于未捕获的异常终止应用程序' NSUnknownKeyException',原因:' [setValue:forUndefinedKey:]:此类不是密钥dateDable的密钥值编码兼容。'

现在看起来它试图将我的视图绑定到一些不是我的customUITableViewCellController的视图

2 个答案:

答案 0 :(得分:0)

当我遇到这些问题时,通常是由两件事引起的。一个是xib文件中的主viewUIView而不是UITableViewCell。另一个是自定义类字段未设置为您的自定义类。

答案 1 :(得分:0)

  1. 检查您的数据源"和#34;代表"连接。
  2. 检查是否已添加到viewController。
  3. 检查您是否已正确分配" dequeueReusableCellWithIdentifier"。