2017-04-17 39 views
0

我有一个需要传递一个信息给heightForRowAtIndexPath方法的自定义表视图细胞的方法。如何执行自定单元

每个单元格必须回答这个问题应该有heightForRowAtIndexPath方法是什么规模。 如何在特定的indexPath上引用该单元格并执行其getHeight方法?

我使用了[tableView dequeueReusableCellWithIdentifier:@"theCell" forIndexPath:indexPath];但我得到错误:“警告:无法加载任何Objective-C类信息,这将显着降低可用类型信息的质量。”当我尝试去做它。

我应该改变我的做法还是有一个方法来“问”它应该有其尺寸电池?

这是我自定单元的getHeight方法

-(CGFloat)getHeight{ 

    if(isCardOpen){ 
     //Calculate the size it should have based on its sub products 
     //returning a test value for validation only 
     return 253; 
    } 

    return 153; 

} 

这是我heightForRowAtIndexPath

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    CardCell *cell = (CardCell*)[tableView dequeueReusableCellWithIdentifier:@"theCell" forIndexPath:indexPath]; 


    return [cell getHeight]; 


} 
+0

我推荐你阅读这个:http://stackoverflow.com/questions/18746929/using-auto-layout-in-uitableview-for-dynamic-cell-layouts-variable-row-heights – Koen

回答

1

你想自动调整大小的细胞。要做到这一点,下面的行添加到您的视图控制器的viewDidLoad()

tableView.estimatedRowHeight = 85.0 // Use your own value here 
tableView.rowHeight = UITableViewAutomaticDimension 

你还必须确保每个电池的原型是能够明确地计算自己的高度。这意味着您必须设置自动布局约束,以便不存在垂直歧义。

0

你理解错的使用。不是单元格知道它是高度,高度将由委托函数赋予单元格。

你需要某种型号的存储,你需要创建布局(哪个小区是在指数X +应该是在指数X,其高度)的信息。

如果你需要一个动态的高度,你应该阅读一些博客文章吧,例如:https://www.raywenderlich.com/129059/self-sizing-table-view-cells

+0

好吧,我想象我将不得不使用另一种方法。 –

0

这不是让细胞治其高度的最佳解决方案。

问题与您的代码是

[tableView dequeueReusableCellWithIdentifier:@"theCell" forIndexPath:indexPath] 

线。当您尝试将可重复使用的单元出列时,它会尝试在之前确定其高度,因此您在此处循环。如果你想最小的解决办法可能 - 将其更改为

[self cellForRawAtIndexPath] 
相关问题