在复合 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 文件应该实现 UITableViewDelegate
和 UITableViewDataSource
@interface NameOfViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
然后您可以覆盖表的方法。听起来您想覆盖didSelectRowAtIndexPath
。我仍然有点不清楚你到底想要做什么,但听起来你只会使用这个方法,要么告诉单元格它被突出显示,要么向单元格传递一条消息告诉它做某事(比如改变它的图像) .如果您想这样做,您还需要对您的单元进行子类化并从 .xib 文件中加载它。对不起,如果这听起来像很多工作,但表格视图需要大量代码才能进行自定义,而不是非常基本的东西。
【讨论】:
是的,唯一的解决方案似乎是调用 mybackground.highlight=YES 等等,这必须在 didSelectRow 中完成...以上是关于在复合 UIView 中的触摸事件上突出显示 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章
澄清 UITableViewCell 在高亮事件上的未记录行为
当很清楚并且不同的uiview可以处理它们时,如何忽略最上面的uiview中的触摸事件
UIView 中的“BOOL 突出显示”属性而不是 UITableViewCell?