在展开可选值访问tableView Cell时意外发现nil

时间:2015-11-03 09:12:11

标签: ios swift tableview

我想从tableView func外部访问tableView的单元格, 例如,在这种情况下,我想从IBAction Func访问,然后我创建了tableView对象和IndexPath对象,当我运行我的项目时,Xcode向我显示了这个错误:

  

致命错误:在展开“可选值”时意外发现nil

这一行:mytableView!.cellForRowAtIndexPath(indexPath!)

@IBAction func editButtonFunc(sender: AnyObject) {

    mytableView!.cellForRowAtIndexPath(indexPath!)
    let cell =
    mytableView!.dequeueReusableCellWithIdentifier(
        "mycell", forIndexPath: indexPath!)
        as! profileTableViewCell
    cell.contentOutlet.text = contentItems[indexPath!.row]
    cell.contentOutlet.textAlignment = NSTextAlignment.Right
    cell.contentOutlet.font = UIFont(name: "X Yekan", size: 18)

}

3 个答案:

答案 0 :(得分:0)

如果您只想获得某个单元格的参考,也许您需要:

func getTableViewCell() -> UITableViewCell? {
    guard let tableView = mytableView, index = indexPath 
    else { return nil }

    return tableView.cellForRowAtIndexPath(index)
}

并且,如果要为tableViewCell设置数据,则应使用UITableViewDataSource方法执行此操作:cellForRowAtIndexPath

答案 1 :(得分:0)

当您尝试打开它时,显然mytableViewindexPathnil。在强行打开它们之前,必须检查这两个对象是否保持正确的值。

答案 2 :(得分:0)

调用tableview方法cellForRowAtIndexPath几乎总是错误的。如果索引路径不适用于屏幕上可见的单元格,则返回nil。你的情况更糟,因为你调用函数然后不使用它的值。绝对的,完全错误的是从你自己的委托cellForRowAtIndexPath以外的任何地方调用dequeue ....