我的设计师提出了一个有点棘手的设计。在tableView中,他们想要我
1)有一个定制的附件视图 - (UIButton子视图) - DONE
2)给自拍单元配件提供自定义动作(没有将detailView推送到导航堆栈,但其他东西) - DONE
现在是棘手的部分。
1)如果我点击单元格,附件视图应显示“highlightedBackground”。
2)如果我点击附件视图,则只有附件视图应突出显示,但带有“alternativeHighlightedBackground”。
所以回顾一下,对于accessoryView,我们有正常的背景和两个不同的突出显示背景,这取决于是否点击了整个单元格,或者只是轻拍了附件视图。
目前,我正在将一个UIButton作为子视图添加到cellForRowAtIndexPath中的附件视图中,该视图用作自定义附件。显然,附件视图将触摸事件传递给按钮,并且按钮以相同的背景突出显示,无论被点击的是什么。 此单元格不是自定义的,它是一个普通的UITableViewCell实例。 SDK是iOS5,遗憾的是没有iOS6可以使用。
有什么建议吗?
答案 0 :(得分:1)
我会放弃附件视图路径,并创建UITableViewCell
的子类。只需在init函数中创建您的按钮,将其作为子视图添加到单元格的contentView
,将按钮的触摸操作设置为您想要的,然后使用看起来的内容覆盖layoutSubviews
像这样:
- (void)layoutSubviews
{
[super layoutSubviews];
CGRect bounds = self.contentView.bounds;
CGFloat buttonOriginX = self.contentView.bounds.size.width - BUTTON_WIDTH - PAD;
CGFloat buttonOriginY = floorf((bounds.size.height - BUTTON_HEIGHT)/2.0)+1;
self.mybutton.frame = CGRectMake(buttonOriginX, buttonOriginY, BUTTON_WIDTH, BUTTON_HEIGHT );
}
按钮将在此单元格之前拦截触摸。然后,您可以完全控制按钮在触摸时显示的内容(设置设置为高亮状态图像)。