0

我的设计师想出了一个有点棘手的设计。在 tableView 中,他们希望我
1) 有一个自定义附件视图 - (UIButton 子视图) - 完成
2) 给一个被点击的单元格附件一个自定义操作 (没有 detailView 推送到导航堆栈而是其他东西) - 完成

现在是棘手的部分。


1)如果我点击单元格,附件视图应显示“highlightedBackground”。
2)如果我点击附件视图,只有附件视图应该突出显示,但带有“alternativeHighlightedBackground”。

回顾一下,对于accessoryView,我们有正常的背景和两种不同的高亮背景,这取决于是点击了整个单元格还是只点击了附件视图。

目前,我正在将 UIButton 作为子视图添加到 cellForRowAtIndexPath 中的附件视图中,用作自定义附件。显然,附件视图将触摸事件传递给按钮,并且按钮以相同的背景突出显示,而不管点击了什么。该单元格目前不是自定义的,它是一个普通的 UITableViewCell 实例。SDK是iOS5,可惜没有iOS6可以用。

有什么建议吗?

4

1 回答 1

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 );
}

该按钮将在单元格以这种方式之前拦截触摸。然后,您可以完全控制触摸按钮时显示的内容(设置设置它的突出显示状态图像)。

于 2012-12-16T06:12:47.973 回答