访问不在屏幕上的单元格内容会导致致命错误

时间:2017-12-16 14:40:26

标签: ios swift uitableview

我的桌面视图超过5个单元格,但是由于行的高度,屏幕上只出现了5个单元格。在tableview外面有一个按钮,通过点击它,我想访问每个单元格中的内容。以下是点按代码,

@IBAction func submitTapped(_ sender: Any) {

//array.count is bigger than the number of appearing cells on the screen.

    for i in 0..<array.count {
        let index = IndexPath(row: i, section: 0)
        let cell = self.table.cellForRow(at: index) as! CustomTableViewCell
        for a in 0...6 {
            print(i)
            print(a)
            if let letter = cell.letter.text {
                print(letter)
            }
        }
    }
}

点击按钮后,我的代码旁边出现错误,让cell = self.table.cellForRow(at:index)为! CustomTableViewCell,Thread 1:致命错误:在展开Optional值时意外发现nil

我认为是因为屏幕上出现的单元格数量,如果array.count等于或小于屏幕上可以出现的单元格数,则没有错误。

我调整了单元格的高度并在屏幕上显示了x个单元格,然后如果是array.count&gt; x,然后它崩溃,如果等于或小于x,那么它就可以工作。

我不确定问题是什么,是因为可重复使用的细胞?如何访问不在屏幕上的单元格中的内容?

1 个答案:

答案 0 :(得分:1)

Modify your method:


@IBAction func submitTapped(_ sender: Any) {

        //array.count is bigger than the number of appearing cells on the screen.

        for i in 0..<array.count {
            let index = IndexPath(row: i, section: 0)
            if let cell = self.table.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath) as? CustomTableViewCell {
                for a in 0...6 {
                    print(i)
                    print(a)
                    if let letter = cell.letter.text {
                        print(letter)
                    }
                }
            }
        }
    }