gpt4 book ai didi

ios - 分组的 UITableview 中的减少单元格

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:11:32 25 4
gpt4 key购买 nike

我正在向现有的 tableView 添加一个部分并得到这个:

enter image description here

我的新单元格降低了高度。适当的方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
return cells[indexPath.section][indexPath.row];
}

- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if ([headers[section] isKindOfClass:[UIView class]])
return [headers[section] frame].size.height;

return 10.0f;
}

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if ([headers[section] isKindOfClass:[UIView class]])
return headers[section];

return nil;
}

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = cells[indexPath.section][indexPath.row];

if (cell == clientXibCell) return 100.0f;
if (cell == agencyXibCell) return 145.0f;
return 46.0f;
}

我不明白我需要做什么来解决这个问题。有什么想法可能是问题的根源吗?

更新我现在确信预定义自定义单元格可视界面会造成这种麻烦。

supervisorCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:nil];
bgView = [[UIImageView alloc] initWithFrame:supervisorCell.backgroundView.frame];
[bgView setImage:stretchableImageByHorizontal([UIImage imageNamed:@"cell_bgd_bottom"])];
[supervisorCell setBackgroundView:bgView];
bgView = [[UIImageView alloc] initWithFrame:supervisorCell.backgroundView.frame];
[bgView setImage:stretchableImageByHorizontal([UIImage imageNamed:@"cell_bgd_bottom_active"])];
[supervisorCell setSelectedBackgroundView:bgView];

当我取消注释除创建单元格的第一条语句之外的所有内容时,除了单元格的自定义外观外,一切正常。我需要在这个简单的代码中更改什么来解决这个问题?

最佳答案

单元格的高度由 heightForRowAtIndexPath: 控制。查看您的代码,似乎此方法总是返回 46

你的两个 ifs 正在比较指针,i。 e.,你的细胞的实例。这意味着在您的所有单元格中,一个单元格的高度为 100,一个单元格的高度为 145,而所有其他单元格的高度为 46.f

我想你想要完成的是为所有同类单元格设置这个高度,所以你应该改变你的 heightForRowAtIndexPath: 方法,如下所示:

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

if ( [cell isKindOfClass:[YourCustomCell1 class]] ) return 100.0f;
if ( [cell isKindOfClass:[YourCustomCell2 class]] ) return 145.0f;
return 46.0f;
}

Ps1:将 YourCustomCell 类更改为您自己的类。如果您没有子类,请尝试设置标签或类似的东西来区分它们。

Ps2:始终使用tableview 的方法cellForRowAtIndexPath 通过indexPath 获取单元格的引用。

关于ios - 分组的 UITableview 中的减少单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18300857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com