子类化UITableViewCell的问题

时间:2009-05-21 19:16:23

标签: iphone

我有一个继承UITableViewCell的类A(用于自定义表格单元格)。它有成员说x是UILabel。

现在,如果我想在cellForRowAtIndexPath方法中设置像a.x.text =“some text”这样的值,我会收到编译器错误“单元格中的成员x的错误,这是非类型的UITableViewCell”。

您能否告诉我如何解决这个问题?

感谢。

3 个答案:

答案 0 :(得分:2)

首先,确保您的属性已正确定义:

@interface A : UITableViewCell {
  UILabel *x;
}

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

@end

然后确保在表格视图数据源中包含A.h,并确保将单元格转换为A类型:

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

答案 1 :(得分:0)

请务必将x作为属性添加到子类中:

@interface ACell : UITableViewCell {
      UILabel *X;
}

@property (readonly, nonatomic) UILabel* X;

答案 2 :(得分:0)

尝试使用:

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

看看会发生什么。