gpt4 book ai didi

ios - 在 iPhone 中动态更改 UITableviewCell 高度?

转载 作者:可可西里 更新时间:2023-11-01 04:27:57 25 4
gpt4 key购买 nike

我在 UITableViewCell 中有三个自定义 UILabel。像这样的单元格设计,

Date(12.1.2012)  Time(12.00pm)
Cost: $20.00
Details

我在 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; 中指定了行高 100。但是,现在详细信息有时会从服务器返回空(Null)。那时我需要从单元格中删除详细信息标签并将特定单元格(行)的高度更改为 70。我该怎么做?我在谷歌搜索了我最好的水平。但是,我仍然对这样做感到困惑。你能帮我么?谢谢。我从这个链接中得到了一些想法 - http://www.cimgf.com/2009/09/23/uitableviewcell-dynamic-height/。他们只使用一个标签来调整行高。请帮助我。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 90;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];


        UILabel *dateLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 100, 30)];
        dateLabel.tag = 100;
        dateLabel.backgroundColor = [UIColor clearColor];
        dateLabel.font = [UIFont fontWithName:@"Helvetica" size:16];
        dateLabel.font = [UIFont boldSystemFontOfSize:16];
        dateLabel.highlightedTextColor = [UIColor whiteColor];
        [cell.contentView addSubview: dateLabel];

UILabel *timeLabel = [[UILabel alloc] initWithFrame:CGRectMake(120, 0, 200, 25)];
        timeLabel.tag = 101;
        timeLabel.backgroundColor = [UIColor clearColor];
        timeLabel.font = [UIFont fontWithName:@"Helvetica" size:14];
        timeLabel.highlightedTextColor = [UIColor whiteColor];
        [cell.contentView addSubview: timeLabel];

UILabel *costLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 30, 300, 25)];
        costLabel.tag = 102;
        costLabel.backgroundColor = [UIColor clearColor];
        costLabel.font = [UIFont fontWithName:@"Helvetica" size:14];
        costLabel.font = [UIFont boldSystemFontOfSize:14];
        costLabel.highlightedTextColor = [UIColor whiteColor];
        [cell.contentView addSubview: costLabel];

        UILabel *eventLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 60, 300, 25)];
        eventLabel.tag = 103;
        eventLabel.backgroundColor = [UIColor clearColor];
        eventLabel.font = [UIFont fontWithName:@"Helvetica" size:14];
        eventLabel.font = [UIFont boldSystemFontOfSize:14];
        eventLabel.highlightedTextColor = [UIColor whiteColor];
        [cell.contentView addSubview: eventLabel];
}

    UILabel *dateLabel = (UILabel *) [cell.contentView viewWithTag:100];
    dateLabel.text = [DateArray objectAtIndex:indexPath.row];

UILabel * timeLabel = (UILabel *) [cell.contentView viewWithTag:101];
    timeLabel.text = [timeArray objectAtIndex:indexPath.row];

UILabel * costLabel = (UILabel *) [cell.contentView viewWithTag:102];
    costLabel.text = [costArray objectAtIndex:indexPath.row];

    UILabel *eventLabel = (UILabel *) [cell.contentView viewWithTag:103];
NSString *description = [eventArray objectAtIndex:indexPath.row];
if([description isEqualToString:@""])
{
eventLabel.text = @""; // Here i don't want to show this label and resize(reduce) the row height to 60;
}
else
{
    eventLabel.text = description;
}
    return cell;
}

我该怎么做?谢谢。

最佳答案

返回高度时,检查详细描述是否为空。如果返回60。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *description = [eventArray objectAtIndex:indexPath.row];
if([description isEqualToString:@""])
return 60
else
{
return 90;
}
}

此外,您需要在 cellForRowAtIndexPath: 中的同一个 if 语句中删除带有 @"Details" 的标签。预先标记它,从 subview 中识别它并将它从单元格中删除。

关于ios - 在 iPhone 中动态更改 UITableviewCell 高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8846374/

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