3

UITableViewCellいくつかのオプションを追加して、より大きな TableViewCell を取得するためにのサブクラスを作成しました。

しかし、私の問題は、ラベルのテキストを設定できないことです:

BlogItem *bi = [[channel items] objectAtIndex:[indexPath row]];

NSLog(@"%@", [bi title]);
[[cell mainLabel] setText:[bi title]];
NSLog(@"%@", [[cell mainLabel] text]);

最初のログ メッセージは期待どおりのテキストを返しますが、2 番目のログ メッセージは常にログに記録されます (null)。

何が間違っているのか本当にわかりません。いつものようにラベルを作成しました:

@property (weak, nonatomic) IBOutlet UILabel *mainLabel;

もちろん、ラベルをつなげて合成しました(2回確認)。メソッドも実装しました

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

各セルの適切な高さを取得します (これは正常に機能します)。

ところで、チェックマークは期待どおりに表示されます。あくまでもラベルの話です。

4

1 に答える 1

1

UITableViewCellメソッドでカスタムサブクラスをインスタンス化していることを確認してくださいcellForRowAtIndexPath。また、それらがサブクラスでIBOutlets宣言されていることを確認してください。また、インターフェイス ビルダーのセルの親クラスが同じサブクラスに設定されていることを確認してください。UITableViewTableView

このようなもの (カスタムUITableViewCellサブクラス インターフェイス ファイル):

#import <UIKit/UIKit.h>

@interface MyCustomCell : UITableViewCell
    @property (nonatomic, weak) IBOutlet UILabel *mainLabel;
@end

次に@synthesize、実装ファイルで:

@synthesize mainLabel;

ではcellForRowAtIndexPath、次のようになります。

static NSString *CellIdentifier = @"MyCellIdentifier";
MyCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

BlogItem *bi = [[channel items] objectAtIndex:[indexPath row]];

// Configure the cell...
cell.mainLabel.text = [bi title];
// ... Other stuff
return cell;
于 2012-09-14T13:21:25.710 に答える