2012-02-03 87 views
0

我已将子类型UITableViewCell显示为UIImage和两个UILabel子视图。在表视图的视图控制器中,在方法cellForRowAtIndexPath:中,我已通过setAccessoryType:UITableViewCellAccessoryDetailDisclosureButton启用了附件视图。点击配件按钮时更改contentView

单元显示正确。

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

  1. 在子类UITableViewCell,里面layoutSubviews,对于“备用”标签创建 CGRect S,它们在同一个 场所作为两个“原始”标签位置,并通过隐藏setAlpha:;
  2. 当点击披露按钮时,通过调整它们各自的alpha来替换两个 标签的集合。

问题是我找不出什么逻辑layoutSubviews我会用来知道附件按钮是否被轻敲。我看到在视图控制器accessoryButtonTappedForRowWithIndexPath:被点击该按钮时调用,并从那里看起来像我会打电话layoutSubviews,但无法弄清楚如何使用该事实来完成我想要做的事情。

我对这一切都错了吗?我应该简单地创建另一个UITableViewCell的子类,而不是隐藏/显示CGRect

回答

1

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

我会做以下事情。在UITableViewCell子像下面创建一个公共方法:

在这种方法中,你可以设置contentView根据您的喜好。

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

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

这是变革的内容一个简单的例子。在我看来,您不必使用layoutSubviews添加视图。

changeContentForCell中保留此逻辑,然后致电setNeedsLayout更改布局。也许你可以有一个跟踪你的单元状态的变量:正常状态或修改状态。

希望它有帮助。

+0

这太棒了 - 非常感谢! – Nick 2012-02-04 01:59:38

+0

不客气! – 2012-02-04 09:55:41