我有一个UITableView
,细胞有不同的随机高度。每个单元格都包含一个按钮,当按下按钮时,我想获得特定的单元格高度。我该怎么做呢?
答案 0 :(得分:1)
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
//Here calculate your height
return height;
}
现在,无论您想要找到单元格高度
首先找到indexpath
NSIndexPath *indexPath = [tableView indexPathForCell:cell]
然后找到索引路径上的单元格高度,如下所示
CGFloat cellHeight = [self tableView:tableView heightForRowAtIndexPath:indexPath];
答案 1 :(得分:0)
heightForRowAtIndexPath
不用于获取特定单元格的高度。虽然这是UITableView的DataSource方法,用于在加载时设置UITableViewCell
的高度:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 60.0; // Set the cell height
}
答案 2 :(得分:0)
我认为你是在追求这样的事情;
-(IBAction)buttonPressed:(id)sender {
UIButton *myButton = (UIButton *)sender;
NSLog(@"%0.2f", myButton.superview.frame.size.height);
}
来自文档:“视图可以嵌入其他视图并创建复杂的可视化层次结构。这会在嵌入的视图(称为子视图)和执行该视图的父视图之间创建父子关系。嵌入(称为超级视图)。“
此外,您需要将按钮分配给上述方法。这可以在界面构建器中完成,也可以在cellForRowAtIndexPath
中完成,这看起来与此类似:
UIButton *heightButton = (UIButton *)[cell viewWithTag:1];
[heightButton addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside];
答案 3 :(得分:0)
你可以试试这个。
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Calculate a height based on a cell
if (!self.cutomCell)
{
self.cutomCell = [self.myTableView dequeueReusableCellWithIdentifier:@"CustomCell2"];
}
// Configure the cell
self.cutomCell.introductionLabel.text = self.infoArray[indexPath.row];
// Layout the cell
[self.cutomCell layoutIfNeeded];
// Get the height for the cell
CGFloat height = [self.cutomCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
return height;
}