2

カスタムUITableViewCell(UITableViewCellから継承)を表示するUITableViewControllerがあります。同じ 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 に答える