Pergunta

Eu tenho uma classe A que herda UITableViewCell (para personalizar uma célula de tabela). Tornou-membros dizem x que é um UILabel.

Agora, se eu quiser valores definidos como a.x.text = "algum texto" no método cellForRowAtIndexPath, eu estou recebendo erro do compilador "Erro de membro x na célula que é do tipo não-classe UITableViewCell".

Você poderia por favor deixe-me saber como posso resolver este problema?

Graças.

Foi útil?

Solução

Em primeiro lugar, certifique-se de sua propriedade é definida corretamente:

@interface A : UITableViewCell {
  UILabel *x;
}

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

@end

Em seguida, verifique se você incluiu A.H. em sua exibição de tabela de fonte de dados e certifique-se que você está lançando a célula de tipo 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;
}

Outras dicas

Certifique-se de adicionar x como uma propriedade de sua subclasse:

@interface ACell : UITableViewCell {
      UILabel *X;
}

@property (readonly, nonatomic) UILabel* X;

Tente usar:

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

E ver o que acontece.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top