在tableview单元格中显示多行

时间:2014-02-25 22:41:05

标签: ios objective-c uitableview

我有一个tableview,我想在单元格中显示多行文本。我尝试了下面的代码和高度更改但文本没有中断,第二行没有出现。你对我做错了什么有任何线索吗?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc]
                initWithStyle: UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

    }

    NSString *myString = [_menuItems objectAtIndex:[indexPath row]];
    UILabel *settingsLabel = (UILabel *)[cell viewWithTag:201];
    settingsLabel.text = myString;
    settingsLabel.lineBreakMode = NSLineBreakByWordWrapping;
    settingsLabel.numberOfLines = 0;
    [settingsLabel sizeToFit];

    return cell;
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *str = [_menuItems objectAtIndex:indexPath.row];
    CGSize size = [str sizeWithFont:[UIFont fontWithName:@"Helvetica" size:17] constrainedToSize:CGSizeMake(200, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
    NSLog(@"%f",size.height);
    return size.height + 10;
}

1 个答案:

答案 0 :(得分:0)

要进行快速调试,请设置某些视图的背景颜色,以便准确查看它们的位置。例如,标签有多大?

不要使用sizeToFit,而是使用sizeThatFits:,其大小限制在单元格中的可用宽度,并且具有较大的高度(您期望的最大合理高度)。然后,使用该大小设置标签框架。

更好的是,使用自动布局或自动调整大小来指定标签应与单元格一起增长(高度)。然后,当您在heightForRowAtIndexPath:中设置适当的高度时,标签应自动调整大小以适应整个文本。