我是iOS新手。我正在练习objective-c并制作了我的自定义UITableViewCell。它有一些高度而不是它的默认高度,即高度是120.但是当我运行程序时,单元格显示在它们的默认高度。我只编写了如下代码,我使用xib来设计自定义单元格。如果需要,我可以分享截图。感谢
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CustomCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
}
return cell;
}
编辑在我的一个项目中,我没有实现heightforrowatindexpath方法。为什么我必须在另一个项目中实现。是必要的??请指导。
答案 0 :(得分:1)
如果所有自定义单元格的高度相同但与默认高度不同,则可以使用三个选项来定义高度。
1)在storyboard / Interface构建器中将其定义为TableView的属性。选择TableView - >尺寸检验员 - >行高。
2)在viewDidLoad()中,您可以定义高度_tableView.rowHeight = 120;
此选项会覆盖storyboard / Interface构建器中的值。
3)您可以像其他人建议的那样实施委托。
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 120;
}
最后一个选项可让您灵活地为每行定义不同的高度,并覆盖上述两个选项的值。
有多种方法可以根据内容获得动态单元格高度。如果你需要帮助我,请告诉我。
答案 1 :(得分:0)
如果您需要不同的单元格高度,则需要在委托中提供它们:https://developer.apple.com/documentation/uikit/uitableviewdelegate/1614998-tableview?language=objc
答案 2 :(得分:0)
必须以委托方法返回行的高度:
select distinct on (campaign_id) count(event), event, u.userid, u.campaign_id,
rank() over (partition by u.campaign_id order by count(event) desc) as THISHERE
from events e join
users u
on u.userid = e.userid
group by event, 3 , 4
order by campaign_id, count(event) desc
fetch first 20 rows only;