Domanda

Ho una classe che eredita Un UITableViewCell (per personalizzare una cella di tabella). Ha membri dicono x che è un UILabel.

Ora, se voglio impostare valori come a.x.text = "del testo" nel metodo cellForRowAtIndexPath, sto ottenendo errore del compilatore "errore per il membro x nella cella che è di tipo non-class UITableViewCell".

La prego di farmi sapere come posso risolvere questo problema?

Grazie.

È stato utile?

Soluzione

Per prima cosa, assicurarsi che la proprietà è definita in modo corretto:

@interface A : UITableViewCell {
  UILabel *x;
}

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

@end

Quindi assicuratevi di aver incluso A.h nella vista tabella origine dati, e assicurarsi che si sta gettando la cellula di 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;
}

Altri suggerimenti

Assicurarsi di aggiungere x come proprietà alla sottoclasse:

@interface ACell : UITableViewCell {
      UILabel *X;
}

@property (readonly, nonatomic) UILabel* X;

Provare a utilizzare:

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

e vedere cosa succede.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top