UITableView上的SIGABRT

时间:2014-07-07 06:41:38

标签: ios uitableview swift sigabrt

我有这个代码,我是从默认的MasterDetail应用程序中复制出来的,但是当我运行程序时,它会在单元格的声明中停止。我不知道为什么。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell

    let object = objects[indexPath.row].title as String
    cell.textLabel.text = object
    return cell
}

2 个答案:

答案 0 :(得分:0)

  1. 您还没有注册要在表格视图中使用的单元格

    我希望你忘记这样做。

    self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "Cell")
    
  2. 如果您没有注册表格查看单元格,那么它可能会返回nil到单元格。

  3. Apple说

    let == Constant
    
    var == variable values at any time
    

    那么使用?将被视为可选

    你应该喜欢这个

    override func viewDidLoad() {
        super.viewDidLoad()
    
        self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "Cell")
    }
    
    
    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
    
        var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
    
        //OR
    
        //var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("Cell") as? UITableViewCell
    
        //Your stuff
    
        return cell
    }
    

答案 1 :(得分:0)

根据This tutorial from Apple,您可能需要查看故事板上的表格视图。

查找表视图的属性检查器,并验证“content”字段是否设置为“Dynamic Prototypes”。更新此修复程序适合我。

此外,当您打开引擎盖时,请确认表视图中有一个表格单元格,并确保它的“标识符”字段设置为tableView.dequeueReusableCellWithIdentifier方法调用中的值(在你的情况下是“细胞”)