2009-05-21 9 views
1

私は(テーブルセルをカスタマイズするために)UITableViewCellを継承するクラスAを持っています。メンバーにはxと言うUILabelがあります。サブクラス化の問題UITableViewCell

ここで、cellForRowAtIndexPathメソッドでa.x.text = "some text"のような値を設定したい場合、コンパイルエラー "非クラス型のUITableViewCellであるセル内のメンバxのエラー"が表示されます。

どうすればこの問題を解決できますか教えてください。

ありがとうございました。

答えて

2

まず、あなたの財産が正しく定義されていることを確認してください。そして、

@interface A : UITableViewCell { 
    UILabel *x; 
} 

@property (nonatomic, retain) IBOutlet UILabel *x; 

@end 

あなたは、テーブルビューのデータソースにああを含めて、あなたが入力するセルをキャストしていることを確認していることを確認します:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *cellIdentifier = @"cell"; 
    A *a = (A *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    if (a == nil) { 
    a = [[A alloc] initWithFrame:CGRectZero reuseIdentifier:cellIdentifier]; 
    } 
    a.x.text = @"some text"; 
    return a; 
} 
+0

xはクラスAのプロパティであり、上記のコードに従っています。私はviewcontroller.mファイル(cellForRowAtIndexPathメソッドがある)にA.hを含めました。私のテーブルビューのデータソースにA.hを含める方法を教えてください。 – ebaccount

+0

tableView:cellForRowAtIndexPath:はUITableViewDataSourceメソッドです。つまり、View ControllerにA.hを含めると、それはすべて意味しています。 UITableViewCellには明らかにカスタムプロパティがないため、セルをA *型に変換し、UITableViewCell *には変換しないでください。 – pix0r

+0

ご返信ありがとうございます。それは私の間違いでした。私はAITセルの代わりにUITableViewCell *セルを使用していました。今は修正されています。 – ebaccount

0

は、あなたのサブクラスへのプロパティとしてのxを追加してください:

@interface ACell : UITableViewCell { 
     UILabel *X; 
} 

@property (readonly, nonatomic) UILabel* X; 
0

は、使用してみてください:

[[a x] setText:@"your text]; 

と何が起こるかをご覧ください。

関連する問題