繁体   English   中英

轻按“附件”按钮时更改contentView

[英]Changing the contentView when an Accessory button is tapped

我将UITableViewCell细分为显示一个UIImage和两个UILabel子视图。 在表视图的视图控制器中,在方法cellForRowAtIndexPath:我已经通过setAccessoryType:UITableViewCellAccessoryDetailDisclosureButton启用了附件视图。

单元格正确显示。

当我点击附件公开按钮时,我想用两个不同的标签子视图替换两个标签子视图。 我的方法如下:

  1. 在子类UITableViewCell layoutSubviews内部,为“ alternate”标签创建CGRect ,将它们与两个“ original”标签放置在相同的位置,并通过setAlpha:将它们隐藏setAlpha:
  2. 轻触“披露”按钮后,可以通过调整两个字母的Alpha来换掉两个标签的集合。

问题是我无法弄清楚layoutSubviews哪些逻辑,我无法使用这些逻辑来了解是否已轻击附件按钮。 我在视图控制器中看到,在点击该按钮时会调用accessoryButtonTappedForRowWithIndexPath:控制器accessoryButtonTappedForRowWithIndexPath:按钮TappedForRowWithIndexPath :,似乎从那里我将调用layoutSubviews但无法弄清楚如何使用该事实来完成我想做的事情。

我要解决所有这些错误吗? 我应该只创建UITableViewCell另一个子类,而不是使用alpha隐藏/显示CGRect

当我点击附件公开按钮时,我想用两个不同的UILabel子视图替换两个UILabel子视图。

我将执行以下操作。 在您的UITableViewCell子类中创建一个公共方法,如下所示:

- (void)changeContentForCell;

在这种方法中,您可以根据需要设置contentView

然后在您的视图控制器中实现

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
    CustomCell* cCell = (CustomCell*)[tableView cellForRowAtIndexPath:indexPath];
    [cCell changeContentForCell];
}

这是更改内容的简单示例。 我认为您不必使用layoutSubviews添加视图。

将此逻辑保留在changeContentForCell ,然后调用setNeedsLayout更改布局。 也许您可以使用一个变量来跟踪单元格的状态:正常状态或修改状态。

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM