点击“附件”按钮时更改contentView

时间:2012-02-03 15:36:19

标签: ios layout uitableview

我已将[{1}}子类化,以显示UITableViewCell和两个UIImage子视图。在表格视图的视图控制器中,在UILabel方法中,我通过cellForRowAtIndexPath:启用了附件视图。

单元格正确显示。

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

  1. 在子类setAccessoryType:UITableViewCellAccessoryDetailDisclosureButton中,在UITableViewCell内,创建 layoutSubviews用于“备用”标签,将它们放在同一个标​​签中 将两个“原始”标签放置并通过CGRect;
  2. 隐藏它们
  3. 点击公开按钮时,将两个组合替换掉 通过调整各自的alphas来标记。
  4. 问题是我无法弄清楚setAlpha:中我用什么逻辑来了解附件按钮是否被轻敲。我看到在视图控制器中layoutSubviews被调用时,该按钮被点击,从那里看起来我会调用accessoryButtonTappedForRowWithIndexPath:但是无法弄清楚如何使用这个事实来完成我的工作试图做。

    我是否认为这一切都错了?我应该只创建layoutSubviews的另一个子类,而不是隐藏/显示带有alpha的CGRect

1 个答案:

答案 0 :(得分:1)

  

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

我会做以下事情。在UITableViewCell子类中创建一个公共方法,如下所示:

- (void)changeContentForCell;

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

然后在你的视图控制器实现

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

这是更改内容的简单示例。在我看来,您不必使用layoutSubviews来添加视图。

将此逻辑保留在changeContentForCell中,然后调用setNeedsLayout更改布局。也许你可以有一个跟踪你的细胞状态的变量:正常状态或修改状态。

希望它有所帮助。