禁用所有UITableViewCells用户交互

时间:2016-08-26 10:21:50

标签: ios swift uitableview

嘿,我有UITableView。有4个大单元格(因此它们不会全部显示在屏幕上)。在应用程序的各个点我想禁用所有这些的用户交互,但是当我运行此代码时,我得到一个nil解包错误:

for row in 0...3 {
     let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: row, inSection: 2)) as! AnswerTextChoiceCell
     cell.userInteractionEnabled = reEnable ? true : false
}

我猜这是因为它无法获取单元格,因为它没有显示在屏幕上。我将如何禁用所有单元格的所有用户交互?

  

我不想在tableView上禁用用户互动,因为它会阻止用户滚动。

对此的任何指示都会非常感激!

2 个答案:

答案 0 :(得分:2)

尝试一次。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        //Configure the cell

        if indexPath.row == yourcell {
           cell.userInteractionEnabled = false
        }
        return cell!
    }

希望这有帮助。

答案 1 :(得分:0)

在没有看到你的其余代码和你的TableView的情况下,我能看到的唯一两件事会导致崩溃:

  1. 当您将单元格从'cellForRowAtIndexPath'转换为'AnswerTextChoiceCell'类型时
  2. 您的错误部分已传入“cellForRowAtIndexPath”函数
  3. 为了试着看看它是哪一个,我会首先尝试完全省略'AnswerTextChoiceCell',然后看看问题是否消失,或者至少它会停止崩溃。该函数无论如何都将返回一个UITableViewCell,并且该对象上的userInteractionEnabled属性仍然可用,因此这仍然允许您测试您所追求的内容。

    如果这不起作用,那么我们需要更多关于您的表格视图的信息,例如,您有多少部分,是基于故事板,等等。