在我的自定义单元格中有一个UILabel
和一个UIButton
。每当我点击UIButton
时,UILabel
的高度会随标签的内容而增加。如何在自定义表格视图单元格上获得UILabel?
问题是,我怎样才能得到UILabel
这是一个细胞的子视图。每个单元格都包含一个标签和一个按钮,但仅增加了单击此按钮的单元格,其他单元格保持不变。
在此先感谢。
在我的自定义单元格中有一个UILabel
和一个UIButton
。每当我点击UIButton
时,UILabel
的高度会随标签的内容而增加。如何在自定义表格视图单元格上获得UILabel?
问题是,我怎样才能得到UILabel
这是一个细胞的子视图。每个单元格都包含一个标签和一个按钮,但仅增加了单击此按钮的单元格,其他单元格保持不变。
在此先感谢。
您可以在细胞通过所有subview
S和看看哪一个是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)];
}
对于这一点,你必须需要为每个组件分配TAG ..
尝试绑定方法您按钮可能为你工作。
-(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
}
}
}
最简单的方法是将tag
属性分配给标签。这样在你的按钮操作方法中,你可以找到相关的标签。例如:
- (void) myButtonAction: (UIButton *) sender
{
UILabel *theLabel = (UILabel *) [sender.superview viewWithTag: MYLABELTAG];
// Do something with theLabel
}
这段代码确实是因为按钮是在同一视图发现标签
我写了一篇关于如何从tablecells这里得到的标签很短的例子:https://stackoverflow.com/a/9864169/407488
但我认为你想要的是一次增加所有单元格中的所有标签?然后只需使用reloadData
并在调用它之前更改成员变量(当触摸按钮时)。您在cellForRow:
代码中阅读该成员,并指定相应的高度。
你将不得不再给我们更多的东西 - 发布一些代码来说明你现在有什么,并解释你想要达到的目标。我直接提出的一个问题是“你为什么试图去UILabel?” - 您应该在控制标签的单元格上有方法,因此您应该将消息发送到将控制标签的单元格。 – 2012-03-26 09:21:28
customcell上有许多子视图,但我只想按特定的标签高度增加按钮点击(每当内容超过点击更多按钮标签和单元格的高度增加。我成功与特定单元格高度,但在该单元格特定标签的高度不增加) – Birju 2012-03-26 09:26:29
我的评论依然存在。你应该在被调用的单元上有一个方法来表示你想要标签的高度增加,并且单元格会处理改变它。该单元'拥有'它上面的标签,所以它应该负责改变高度。如果不添加一些代码来显示你的单元格,我不能提供比这更详细的建议。 – 2012-03-26 09:55:00