禁用所有 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