无法在 UITableViewCell 中禁用 UIButton

Posted

技术标签:

【中文标题】无法在 UITableViewCell 中禁用 UIButton【英文标题】:Can't disable UIButton in UITableViewCell 【发布时间】:2016-08-09 07:39:58 【问题描述】:

在我的 UITableViewCell 中禁用 UIButton 时遇到问题。代码如下:

func disableAddAudio(reEnable: Bool = false) 

        headerView.recordButton.userInteractionEnabled = reEnable ? true : false
        for index in 0...audioViewModelArray.count - 1 
            let cell = tableView.dequeueReusableCellWithIdentifier("AddedAudioTableCellReuseIdentifier", forIndexPath: NSIndexPath(forRow: index, inSection: 0)) as! AddedAudioTableCell
            cell.trashButton.userInteractionEnabled = false
        
    

如果我在 UITableView 标题视图中禁用按钮,则没有问题。但是,即使我将按钮 trashButton 设置为 false,它似乎也不会禁用。有什么想法我可能在这里做错了吗?

【问题讨论】:

我第一次创建自定义 UITableViewCell 时遇到了类似的问题......我猜如果你在 cellForRow 中设置 cell.trashButton.userInteractionEnabled = false 它应该可以工作...... 您是否在单元格中为 Row 启用了该按钮?可能是细胞可重用性的问题。 @Bhavik 刚刚检查过。没有。尚未在我的代码中的其他任何地方设置启用或禁用。 您可以通过颜色更改或从超级视图中删除该按钮来检查它。如果这不起作用,那么问题出在 tableview Logic 中。 【参考方案1】:

这样试试

let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: index, inSection: 0)) as! AddedAudioTableCell
cell.trashButton.userInteractionEnabled = false

【讨论】:

做到了。谢谢你。我的愚蠢错过了这个并使用 dequeueReusableCellWithIdentifier。【参考方案2】:

试试这个。如果它不为空,它将禁用按钮

cell.trashButton.enabled = false

【讨论】:

【参考方案3】:

尝试把这行代码cell.trashButton.userInteractionEnabled = false改成

cell.trashButton.enabled = false

【讨论】:

以上是关于无法在 UITableViewCell 中禁用 UIButton的主要内容,如果未能解决你的问题,请参考以下文章

无法获取 UITableViewCell 的索引路径

如何禁用 UITableViewCell 上的删除操作?

在 UIButton/UITableViewCell/UICollectionViewCell 选择上禁用 VoiceOver

按钮在使用 UITableViewCell 实例时被禁用,就像它是 UIView 实例一样

添加到 UITableViewCell 的 contentView 的 UITextField 在 Popover 中无法正确显示(iPad、iOS 4.2)

如何禁用 UITableViewCell 突出显示?