cellForRowAtIndexPath non appelé mais numberOfRowsInSection appelé
J'ai un problème simple, mais je ne peux pas comprendre ce qui est.
J'ai un UIViewControler
(appelé RootController
) qui charge un UIView
(appelé SecondView
) qui contiennent un tableView
. Le problème est que le UIView
appeler le numberOfSectionsInTableView
et la numberOfRowsInSection
mais ne l'appelez pas cellForRowAtIndexPath
et la vue de la table n'est pas affiché.
Le code de la RootViewController
est:
SecondView *secondView = [[seconddView alloc] initWithFrame:CGRectMake(0, 60, self.view.bounds.size.width, self.view.bounds.size.height)];
[self.view addSubview:secondView];
Et le code de la SecondView
est:
@interface SecondView () <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic,retain) UITableView *table;
@end
@implementation SecondView
@synthesize table;
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.table = [[UITableView alloc] init];
self.table.delegate = self;
self.table.dataSource = self;
[self addSubview:self.table];
}
return self;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text = @"Prova";
return cell;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 5;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
Pouvez-vous m'aider à trouver le problème? Merci.
source d'informationauteur Anna565
Vous devez vous connecter pour publier un commentaire.
Vous devez définir le Cadre de
UITableView
Cela pourrait également se produire si reloadData est appelée sur un thread différent. Assurez-vous qu'il est exécuté sur le thread principal, puisque tous les éléments d'INTERFACE utilisateur qui doit arriver sur le thread principal.
Dans XCode6 même problème bizarre qui se passait pour moi quand "Ajouter Manquant Contraintes" est appliquée sur tableView sur Storyboard pour ajuster les points de vue.
Pour résoudre ce problème sur le Storyboard premier clair de contraintes:
ensuite appliquer des contraintes dans la mode:
Mon problème était que j'avais une classe simple de faire de la mise en œuvre de mon délégué et de la source de données, mais la durée de vie de la classe simple était trop court.
Je faisais
Nécessaires pour faire
Noter que le code ci-dessus est pseudocode de la mémoire. Prendre à partir de la notion de "assurez-vous que votre source de données/délégué vie longue", mais ne faites pas de copier coller, parce qu'il y a d'autres choses que vous devez faire (comme l'ensemble de votre cadre, etc etc).
Vous pouvez uniquement appeler le viewcontroller de vue APRÈS viewDidLoad est appelé.
Vous ne pouvez pas interagir avec soi-même.vue dans votre méthode init
Dans votre cas, vous devez initialiser votre tableview avec un cadre (comme suggéré dans le code ci-dessus). Juste assurez-vous d'ajouter le code dans le viewDidLoad dans votre viewController
J'ai le même problème comme vous:
Je n'ai qu'une méthode de délégué protocole qui a appelé et c'est numberOfRowsInSection. Pendant ce temps je dois deuxième méthode cellForRowAtIndexPath qui n'a pas été appelé.
La raison de ce comportement est que mon numberOfRowsInSection retournée 0 lignes et cellForRowAtIndexPath n'ai pas l'appeler car elle a besoin de dessiner 0 cellules.
Supprimer UITableView et ajouter de nouveau dans votre ViewController