禁用所有 UITableViewCells 用户交互

Posted

技术标签:

【中文标题】禁用所有 UITableViewCells 用户交互【英文标题】:Disabling all UITableViewCells user interaction 【发布时间】:2016-08-26 10:21:50 【问题描述】:

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

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

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

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

对此的任何指示将不胜感激!

【问题讨论】:

有一个数组,每个单元格都有一个布尔值,并根据您的要求更新布尔值。在 cellforrowatindexpath 检查布尔数组的单元格交互 尝试在cellForRowAtIndexPath方法中禁用 什么是reEnable 希望我的问题正确 看起来reEnable是布尔类型而不是ternary operator的意思。 【参考方案1】:

尝试一次。

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

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

希望这会有所帮助。

【讨论】:

已用 Swift 5 "cell.isUserInteractionEnabled = false" 更新【参考方案2】:

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

    当您将单元格从“cellForRowAtIndexPath”转换为“AnswerTextChoiceCell”类型时 您将错误的部分传递给“cellForRowAtIndexPath”函数

要尝试查看两者中的哪一个,我首先会尝试完全省略“AnswerTextChoiceCell”演员表,看看问题是否消失,或者至少它是否停止崩溃。无论如何,该函数将返回一个 UITableViewCell 并且 userInteractionEnabled 属性在该对象上仍然可用,因此这仍然允许您测试您所追求的。

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

【讨论】:

以上是关于禁用所有 UITableViewCells 用户交互的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableViewCells 中的 UITextFields 中维护文本

使用 UIAppearance 更改所有 UITableViewCells 的文本颜色

在 iOS 9 上,所有 uitableviewcells 都变成一行

动态添加和删除 UITableViewCells 到 UITableView

Swift:点击一个单元格时更改所有 UITableViewCells 的文本颜色

如何为 UITableViewCell 的子视图禁用 UITapGesture?