recherche

Maison  >  Questions et réponses  >  le corps du texte

objective-c - création de tableviewcell

si (!cell) {

cell = [[AddressTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:addressIdentifier];

>
Pourquoi devons-nous ajouter un jugement, écrire ceci, quand ce jugement sera-t-il rendu

仅有的幸福仅有的幸福2875 Il y a quelques jours505

répondre à tous(1)je répondrai

  • 怪我咯

    怪我咯2017-05-02 09:27:41

    Si vous ne jugez pas, un nouveau sera créé à chaque fois, car vous avez un alloc ici.
    Il y a généralement une ligne avant ce code :

    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    Cette ligne sert à récupérer la cellule réutilisée. Si elle peut être récupérée, la cellule a de la mémoire et peut être réutilisée directement. Si elle ne peut pas être récupérée, vous devez la créer vous-même, c'est le code que vous avez posté.
    De plus, vous pouvez également utiliser la méthode d'inscription :

    -(void)registerNib:(nullable UINib *)nib forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(5_0);
    -(void)registerClass:(nullable Class)cellClass forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(6_0);

    Si vous vous inscrivez, vous n’avez pas besoin de juger. D'une manière générale, on l'utilise ainsi :

    [self.tableView registerNib:[UINib nibWithNibClass:className] forCellReuseIdentifier:reuseId];
    //或者
    [self.tableView registerClass:className forCellReuseIdentifier:reuseId];

    Ensuite, la méthode tableView:cellForRowAtIndexPath: ne nécessite pas de jugement supplémentaire, et peut être prise directement :

    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SomeIdentifier"];
        //do something
        ...
        

    répondre
    0
  • Annulerrépondre