![](/img/trans.png)
[英]Why is my custom accessory button not changing image when tapped (ios)?
[英]Changing the contentView when an Accessory button is tapped
我将UITableViewCell
细分为显示一个UIImage
和两个UILabel
子视图。 在表视图的视图控制器中,在方法cellForRowAtIndexPath:
我已经通过setAccessoryType:UITableViewCellAccessoryDetailDisclosureButton
启用了附件视图。
单元格正确显示。
当我点击附件公开按钮时,我想用两个不同的标签子视图替换两个标签子视图。 我的方法如下:
UITableViewCell
layoutSubviews
内部,为“ alternate”标签创建CGRect
,将它们与两个“ original”标签放置在相同的位置,并通过setAlpha:
将它们隐藏setAlpha:
问题是我无法弄清楚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.