【问题标题】:How can I get UITableViewCell to call setHighlighted or setSelected on custom UIView subclass?如何让 UITableViewCell 在自定义 UIView 子类上调用 setHighlighted 或 setSelected?
【发布时间】:2015-11-20 17:57:04
【问题描述】:

UITableViewCell apparently calls setHighlighted:setSelected: 在符合条件的子视图(UIImageViewUILabel 等)被选中时。假设我在单元格中有一个自定义的UIView 子类,我希望它能够获得相同的调用。我已经在上面实现了setHighlighted:setSelected:,但是没有来电。是否有一些我必须声明符合的接口?还是我必须使用UITableViewCell 的自定义子类,覆盖setSelected:,然后自己浏览我的子视图?

他们不只是遍历子视图并询问每个子视图是否响应setSelected: 和/或setHighlighted:,这似乎很奇怪。

【问题讨论】:

    标签: ios uitableview uiview


    【解决方案1】:

    创建UITableViewCell 的子类(如果您使用故事板,请添加您的自定义UIView 并添加@IBOutlet)。在UITableViewCell 的子类中覆盖setSelected

    class CustomTableViewCell: UITableViewCell {
    
         @IBOutlet weak var customView: CustomView!
    
         //Other methods and properties
    
    
             override func setSelected(selected: Bool, animated: Bool) {
                 super.setSelected(selected, animated: animated)
                 customView.setSelected(selected)
             }
    }
    

    【讨论】:

    • 我希望避免让单元格明确地与其特殊子视图对话。我的目标是让单元格像对待任何其他可选子视图一样对待我的自定义视图。
    • 好的,我认为你唯一的机会是明确设置:cell.selectionStyle = .Gray。或任何其他 selectionStyle。
    【解决方案2】:

    查看Source Code 有所帮助。经过一些试验和错误后,您需要包括以下部分:

    @property (assign,getter=isHighlighted,nonatomic) BOOL highlighted;
    
    - (void)setHighlighted:(BOOL)highlighted ;
    - (BOOL)isHighlighted;
    

    添加后,我的自定义 UIView 会收到单元格突出显示的事件。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多