在复合 UIView 中的触摸事件上突出显示 UITableViewCell

Posted

技术标签:

【中文标题】在复合 UIView 中的触摸事件上突出显示 UITableViewCell【英文标题】:Highlight UITableViewCell on touch event in a composite UIView 【发布时间】:2012-07-03 12:12:25 【问题描述】:

我有一个 UITableViewCell,它由一个子容器 UIView 和一些其他子组件组成,例如标签、背景、图标等... 每个 UIImageView 在 Xcode IB 中也有一个高亮图像集。

单元格组装在 UIStoryBoard 中,并有一个连接到它的 segue,因此我没有使用委托的典型 didSelect 方法。 这是层次结构:

UIViewController (serving as UITableView delegate)
--> UIView (main view)
    --> UITableView
        --> UItableViewCell
            --> UIView
                --> (several UIView, image, label, etc..)

我想知道如何在这种情况下选择我的单元格。突出显示整个单元格对我来说很好,但我也有兴趣了解如何进行特定选择。

对于选择/突出显示,我的意思是忘记标准的蓝色或灰色选择,而是回忆我在 IB 中标记为“突出显示”的所有特定图像。

平台目标是 ios 5。

谢谢

【问题讨论】:

您的情节提要中有一个UITableViewCell,而不是在任何类型的控制器中? 是的,UITableView 中的 UITableViewCell。 那么它在表格视图控制器中?听起来您只需要对其进行子类化。 不知道是否重要,但它只是一个 UIViewController 设置为委托和数据源。不是 UITableViewController。 所以你想在用户触摸它的特定部分时突出显示这个复合表格单元格? 【参考方案1】:

你的 UIViewController 文件应该实现 UITableViewDelegateUITableViewDataSource

@interface NameOfViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

然后您可以覆盖表的方法。听起来您想覆盖didSelectRowAtIndexPath。我仍然有点不清楚你到底想要做什么,但听起来你只会使用这个方法,要么告诉单元格它被突出显示,要么向单元格传递一条消息告诉它做某事(比如改变它的图像) .如果您想这样做,您还需要对您的单元进行子类化并从 .xib 文件中加载它。对不起,如果这听起来像很多工作,但表格视图需要大量代码才能进行自定义,而不是非常基本的东西。

【讨论】:

是的,唯一的解决方案似乎是调用 mybackground.highlight=YES 等等,这必须在 didSelectRow 中完成...

以上是关于在复合 UIView 中的触摸事件上突出显示 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章

澄清 UITableViewCell 在高亮事件上的未记录行为

调整大小的 UIView 上没有触摸事件

当很清楚并且不同的uiview可以处理它们时,如何忽略最上面的uiview中的触摸事件

UIView 中的“BOOL 突出显示”属性而不是 UITableViewCell?

将触摸事件从覆盖 UIView 转发到 UIWebView / 如何从代码将触摸事件发送到 uiwebview

全屏 UIView 子类作为面纱不消耗触摸事件