【问题标题】:Swift 4 Correct way of disabling a UIButton in UITableViewCell [closed]Swift 4 在 UITableViewCell 中禁用 UIButton 的正确方法 [关闭]
【发布时间】:2017-10-22 19:50:32
【问题描述】:

我需要知道如何正确禁用 TableViewCell 中的按钮,如果触摸禁用的按钮区域则不会选择单元格?现在我可以看到禁用的按钮,所以如果用户尝试触摸变灰的按钮,则该行被选中,而不是什么都没有发生!我看了很多,但是网上到处都是关于禁用按钮的不相关的回答,而且没有一个人谈论 tableviewcells 的问题。

【问题讨论】:

  • 您的问题与禁用按钮无关(您似乎已经这样做了)。你的问题应该是关于如何防止一行被选中。您需要在问题中提供更多详细信息。如何在您的单元格中启用/禁用按钮?你的数据模型是什么样的?

标签: swift uitableview uibutton didselectrowatindexpath


【解决方案1】:

由于一旦禁用该按钮就不再接收任何触摸事件,解决方案可能是不实际禁用该按钮,而是伪造它。

您可以创建一个变量来维护按钮的状态:

var isEnabled: Bool = true {
    didSet {
        if !isEnabled {
            button.setTitleColor(UIColor.gray, forState: .normal)
        } else {
            //Set the color back to the original value
            button.setTitleColor(UIColor.black, forState: .normal)
        }
    }
}

当 isEnabled 设置为 false 时,这将使按钮标题变灰。

然后,在您的操作方法中,在开头插入一行以提前返回:

func buttonClicked(sender: UIButton) {
    if !isEnabled {
        return
    }
    // Otherwise, handle click event
}

这样,按钮会吃掉点击,但在禁用时不执行任何操作,因此不应选择单元格。

【讨论】:

  • @Ahmad F : 谢谢提醒,我刚做了
  • @ Lukas :非常感谢,这正是我想要的,就像我想要的那样工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-01
  • 2017-09-11
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 1970-01-01
  • 2012-02-22
相关资源
最近更新 更多