在我的自定义单元格中,有一个UILabel
和一个UIButton
。每当我点击UIButton
时,UILabel
的高度就会根据标签的内容而增加。
问题在于我如何才能获得作为单元格子视图的UILabel
。每个单元格都包含一个标签和一个按钮,但只有UILabel
增加了单击单元格按钮,其他单元格保持不变。
提前致谢。
答案 0 :(得分:0)
为此,您需要为每个组件分配TAG ..
答案 1 :(得分:0)
尝试将方法绑定到您的按钮可能适合您。
-(void)buttonClick:(id)sender {
UITableViewCell *cell=(UITableViewCell*)[sender superview];
NSArray *subviews=[cell subviews];
for (int i=0; i<[subviews count]; i++) {
id object=[subviews objectAtIndex:i];
if([object isKindOfClass:[UILabel class]]){
//do stuff here
}
}
}
答案 2 :(得分:0)
最简单的方法是将tag
属性分配给标签。在您的按钮操作方法中,您可以找到相关标签。例如:
- (void) myButtonAction: (UIButton *) sender
{
UILabel *theLabel = (UILabel *) [sender.superview viewWithTag: MYLABELTAG];
// Do something with theLabel
}
此代码的作用是在与按钮相同的视图中找到标签。
答案 3 :(得分:0)
您可以浏览单元格中的所有subview
,看看哪一个是UILabel
:
for(UIView *v in [cell subviews])
{
if([v isKindOfClass:[UILabel class]])
//you can put more checks to see if height is to be increased/decreased
[v setFrame:CGRectMake(origin.x,origin.y,width,height)];
}
答案 4 :(得分:0)
我写了一个关于如何从tablecells获取标签的简短示例:https://stackoverflow.com/a/9864169/407488
但我认为你想要的是立刻增加所有细胞中的所有标签?然后只需使用reloadData
并在调用之前更改成员变量(触摸按钮时)。您在cellForRow:
代码中读取该成员并指定适当的高度。