0

我正在构建一个 IOS 应用程序主页,它基本上由以下结构组成 -

在此处输入图像描述

这基本上是一个 UIView,它包含一个嵌套的 UIScrollView,它又包含一个带有 3 个自定义单元格的 TableView。

我从动态数组中提取数据并将其过滤到相关单元格中 - 除了我无法解决的两个问题之外,所有工作都很好 -

1- 自定义单元格在情节提要中具有不同的高度,但是在编译应用程序时它们始终是相同的高度 - 是否可以在 UITableView 行上设置自动高度?如果没有,谁能解释我如何将正确的高度应用于每个单元格?

2-包装表格视图的表格视图/视图需要扩展以使所有动态单元格可见-我该如何实现?

下面是我的tableview方法供参考-

-(UITableViewCell *)tableView:(UITableView *)tableView
    cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier =@"CellFeed";
    static NSString *CellIdentifierArtNo =@"CellArtRecNo";
    static NSString *CellIdentifierBook =@"CellBooking";
    UITableViewCell *cell;
    feedData *f = [self.HpFeedArray objectAtIndex:indexPath.section];

    NSString * ArtPString = @"articleP";
    NSString * ArtNoPString = @"article";
    NSString * ArtBook = @"booking";

    if([f.FeedGroup isEqualToString:ArtPString]){
        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier  
                                               forIndexPath:indexPath];
        CellHp_RecArticleWithImage *cellImage = (CellHp_RecArticleWithImage *)cell;
        cellImage.selectionStyle = UITableViewCellSelectionStyleNone;
        cellImage.artTitle.text = f.FeedTitle;
        cellImage.artImg.text = f.FeedDesc;
        cellImage.artDate.text = f.FeedDate;
        cellImage.textLabel.backgroundColor=[UIColor clearColor];

        return cellImage;
    }
    if([f.FeedGroup isEqualToString:ArtBook]){
        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierBook 
                                               forIndexPath:indexPath];
        CellHp_BookingAlert *cellBook = (CellHp_BookingAlert *)cell;
        cellBook.selectionStyle = UITableViewCellSelectionStyleNone;
        cellBook.HeadlineLbl.text = f.FeedTitle;
        cellBook.TextBoxLbl.text = f.FeedDesc;
        //cellBook.DateLbl.text = f.FeedDate;

        return cellBook;
    }
    else{
        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierArtNo 
                                               forIndexPath:indexPath];
        CellHp_RecArticleNoImage *cellNoImage = (CellHp_RecArticleNoImage *)cell;
        cellNoImage.selectionStyle = UITableViewCellSelectionStyleNone;
        cellNoImage.artTitle.text = f.FeedTitle;
        cellNoImage.artImg.text = f.FeedDesc;
        cellNoImage.artDate.text = f.FeedDate;
        cellNoImage.textLabel.backgroundColor=[UIColor clearColor];

        return cellNoImage;
    }

干杯

4

3 回答 3

1

看起来您有自定义 UITableViewCell 子类,例如CellHp_RecArticleNoImageor CellHp_BookingAlert(我可以建议将它们重命名为不那么令人头疼的东西吗?;) )。

在这种情况下,如果你只有 3 种不同的细胞类型,你可以这样做:

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

    if ([cell isKindOfClass:[CellHp_BookingAlert class])
    {
         return 123.0;
    }
    else if ([cell isKindOfClass:[CellHp_RecArticleNoImage class])
    {
         return ...
    }
     ...
}

或者,您可以让所有自定义类实现一个height更清洁的解决方案的方法,并且heightForRowAtIndexPath:您可以获取单元格并调用其高度方法。

回覆。问题2,使用蒂姆提到的UIView的sizeToFit方法。

于 2013-11-07T23:41:15.703 回答
1

您需要实现以下方法来识别单元格的高度。

- (CGFloat)tableView:(UITableView *)tableView 
  heightForRowAtIndexPath:(NSIndexPath 
   *)indexPath;
于 2013-11-07T11:15:55.697 回答
0
  1. heightForRowAtIndexPath您可以通过根据此处概述的过程将它们出列来从情节提要中导出静态或动态(数据驱动)单元格高度:从情节提要中检索自定义原型单元格高度?

  2. 我不确定我是否理解这个问题,但是contentSize如果您尝试调整表格大小以适应内容,则可以获取表格视图。

于 2013-11-07T23:04:56.097 回答