设置包含动态Cell Height的UITableView的高度

时间:2016-01-06 07:07:23

标签: ios objective-c uitableview uiscrollview

我已将UITableView带入UIScrollView现在我想将静态高度设置为tabelview并将contentSize设置为ScrollView,因为UITableView正在调用每次滚动cellForRowAtIndexPath时都会tableview

我正在使用以下代码动态设置tableviewcell尺寸。

现在的问题是:如何以及在哪里可以将总高度设置为tableview,将内容大小设置为scrollview

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSMutableDictionary *itemDataDic = [resultArray objectAtIndex:indexPath.row];
    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:15.0];
    CGSize constraintSize = CGSizeMake(275.0f, MAXFLOAT);
    CGSize labelSize = [[itemDataDic objectForKey:@"offer_title"] sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];

    if (labelSize.height > 30.00f)
    {
        totalHeight = totalHeight + 325;
        return 325;
    }
    else
    {
        totalHeight = totalHeight + 306;
        return 306;
    }
}

2 个答案:

答案 0 :(得分:1)

'heightForRowAtIndexPath'对于一个单元格被多次调用,因此,以这种方式计算totalHeight是错误的。

您需要在init和数据更改时计算表的高度。

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:22];

答案 1 :(得分:0)

好吧,可能是最糟糕的解决方案是遍历每一行并计算所有行的总高度然后设置它们,如:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:p="http://www.w3org.com"
    version="1.0">

    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="node()|@*" priority="0">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="p:Response" priority="10">
        <xsl:copy>
            <xsl:copy-of select="*[local-name()!='Values'] | @*"/>
            <p:AllResults REPEATINGTYPE="List">
                <p:data>
                    <xsl:apply-templates select="p:Values"/>
                </p:data>
            </p:AllResults>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>