Dans CustomCell.m I Définissez la méthode init dans laquelle je veux charger une cellule à partir de l'IB:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ cell=[[CustomCell alloc]init]; return cell;
4 Réponses :
Vous écrivez dans votre celltfrowortindexPath: P> auto code> (renvoyé de
Super init code>) avec l'objet renvoyé de votre tableau. Si vous souhaitez charger une cellule personnalisée à partir d'une nib, faites-la dans votre méthode CellfrotIndExpath ou créez une méthode de classe de commodité sur votre cellule personnalisée qui se charge à partir du NIB:
+(CustomCell*)cell
{
NSArray *nib =[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
return [nib objectAtIndex:0];
}
Merci, mais avant Cell = [CustomCell NewCell]; Ai-je besoin d'une cellule init: cellule = [[CustomCell Alloc] init];
J'ai fait comme vous avez expliqué, et maintenant j'ai eu ça! Au lieu de précédent: l'objet avec +0 retenir les comptes retournés à l'appelant où un +1 (possède) retenir le nombre est attendu
Oh oui, je l'ai appelé Newkell, quel arc se plaint de. Je vais mettre à jour la réponse, désolé.
Et non, vous n'avez pas besoin d'alloc / init, la cellule est mise en mémoire en chargement de la nib.
Mais si je fais la même chose pour la cellule, mais pour l'en-tête personnalisé, que dois-je écrire au lieu de la cellule + (CustomCell *)? + (Personnaliséheader *) Voir?
Si vous aimez, oui - vous devez mettre une méthode de classe similaire dans la classe de votre en-tête View.
Gardez votre méthode init comme ci-dessous et effectuez la liaison dans le générateur d'interface
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"CustomCell"; CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; for (id currentObject in topLevelObjects){ if ([currentObject isKindOfClass:[UITableViewCell class]]){ cell = (CustomCell *) currentObject; break; } } } }
Merci pour la réponse, je connais cette méthode mais je préfère avoir la méthode init dans la cellule.
Ce que je fais est puis dans la classe principale p> pour moi cela fonctionne bien et dans Produit -> Analyser code> ne donne aucun avertissement ni erreur p> p>
J'ai rencontré le même problème, je l'ai réparé en supprimant le code qui aime dans la méthode init de la définition de la définition de CustomView. p> Mettez ce code à la endroit où vous créez la coutume. p> p>