2

我有一个 UITableViewController,它显示一个自定义 UITableViewCell(继承自 UITableViewCell)。同一个 UITableViewCell 有一个 UILabel 可以有可变长度的文本。我面临的挑战是如何在我的 UITableViewController 中访问这个 UILabel,以便我可以在 heightForRowAtIndexPath 中设置正确的单元格高度。

或者在旁注中,我如何解决动态大小标签的问题。

谢谢

这是我的自定义 UITableViewCell 代码:

标题:

#import <UIKit/UIKit.h>

@interface MessagesCustomViewCell : UITableViewCell

@property (nonatomic, weak) IBOutlet UILabel *message;   <---- need to access this 

@end

执行:

#import "MessagesCustomViewCell.h"

@implementation MessagesCustomViewCell
@synthesize message=_message;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
    }
    return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

@end
4

2 回答 2

3

使用 Ivan 提到的测量字体大小的方法,您可以在 MessagesCustomViewCell 中额外添加一个类方法,

+ (CGFloat)heightForMessage:(NSString *)message;

在其中您使用适当的 UILabel 宽度/高度、字体等计算消息的高度。这可以从 heightForRowAtIndexPath: 调用,如下所示:

NSString *dynamicString = [self.mydata objectAtIndex:indexPath.row];
CGFloat height = [MessagesCustomViewCell heightForMessage:dynamicString];
return height;
于 2012-10-29T16:29:25.103 回答
1

数据更新后调用 [tableView reloadData]。

使用 heightForRowAtIndex 中的 [yourString sizeWithFont:(UIFont*) forWidth(CGFloat) lineBreakMode:(NSLineBreakMode)] 方法检查大小。引用的方法将返回所需的大小(包括高度)。

于 2012-10-29T16:21:39.960 回答