質問

私はUITableViewCellの継承クラスAを持っている(表のセルをカスタマイズします)。これは、メンバーがUILabelであるXを言っています。

さて、私はcellForRowAtIndexPathメソッドで=「いくつかのテキスト」a.x.textのような値を設定したい場合は、私はコンパイルエラー「非クラス型のUITableViewCellのものであり、細胞内のメンバxのエラー」を取得しています。

あなたは私が、私はこの問題を解決する方法を教えてくださいもらえますか?

感謝します。

役に立ちましたか?

解決

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

@interface A : UITableViewCell {
  UILabel *x;
}

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

@end

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

- (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;
}

他のヒント

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

@interface ACell : UITableViewCell {
      UILabel *X;
}

@property (readonly, nonatomic) UILabel* X;

使用してみてください。

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

そして何が起こるか見ています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top