UITableViewCell initWithStyle:UITableViewCellStyleSubtitle ne fonctionne pas
Je vais avoir un problème dans l'affichage des informations dans une cellule, l'un sur la gauche et un sur la droite. Je suis au courant à l'aide de initWithStyle
avec UITableViewCellStyleSubtitle
. J'utilise cela, mais il ne semble pas fonctionner.
Voici un exemple de code:
- (UITableViewCell *)tableView:(UITableView *)ltableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Account Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:Cellidentifier];
}
Accounts *account = [self.fetchedResultsController objectAtIndexPath];
cell.textLabel.text = account.name;
cell.detailTextLabel.text = @"Price";
return cell;
}
Je peux la cellule d'affichage.textLabel.texte très bien, cependant je n'arrive pas à la simple "Prix" s'affiche. J'ai essayé différentes choses, telles que le réglage de la taille de la police de cell.detailTextLabel
.
J'ai aussi essayé de UITableViewCellStyleValue1
comme certains l'ont suggéré dans les messages plus anciens.
Jeté NSLog après la définition de "Prix", indique la cellule.detailTextLabel comme null.
Pas sûr de ce que je fais mal.
Edit: j'ai trouvé ceci: cellule.detailTextLabel.le texte est NULL
Si je supprime if (cell == nil)
il fonctionne...
Cette vérification doit être en place, aussi, comment voulez-vous faire le travail lors de l'utilisation de différents styles?
CellIdentifier
n'importe où ailleurs? Peut-être que vous êtes réellement dequeueing cellules.De toute façon, avez-vous franchi avec le débogueur pour voir ce que
cell
points à chaque ligne?Nope, CellIdentifier n'est pas utilisé ailleurs.
Avez-vous l'étape?
Je ne voulais pas dire pour que cela devienne un comment utiliser XCode... je suis très nouveau à cela et n'ai pas utilisé les points d'arrêt et débogueur. Viens de comprendre comment le faire. Donc, vous dites que je devrais être à la recherche à la valeur de ce que la cellule est à chaque point d'arrêt? Si oui, j'ai mis des points d'arrêt tout au long de. Le style n'est pas se jeu car il ne rentre pas dans le if (cellule == nil). Chaque point indique la cellule de la même valeur, pour cette exécution 0X06aa3140
OriginalL'auteur BlizzofOZ | 2012-05-07
Vous devez vous connecter pour publier un commentaire.
Lors de l'utilisation de story-boards et des prototypes de cellules, une cellule est toujours retourné à partir de la file d'attente de la méthode (en supposant un prototype avec cet identifiant existe). Cela signifie que vous ne jamais obtenir dans le
(cell == nil)
bloc.Dans votre cas, le prototype de la cellule n'est pas défini dans la table de montage avec le style des sous-titres, donc un sous-titré de la cellule n'est jamais utilisé, et le détail du texte de l'étiquette n'existe pas. Modifier le prototype dans le storyboard pour avoir le style des sous-titres.
Des story-boards! L'appel de grande.
Des story-boards, droit sur elle!
comment faire tout cela dans le code? Je n'ai pas utiliser la table de montage ou de plume.
si vous vous inscrivez à une classe de cellules avec une réutilisation identifier, dans le viewDidLoad, alors cette cellule sera créé automatiquement de la même manière que si vous aviez enregistré un prototype dans le storyboard. Est-ce que vous vouliez dire?
OriginalL'auteur jrturton
Supprimer tous votre code une fois que vous essayez ces lignes et vérifier cela va fonctionner ou pas.
OriginalL'auteur vishiphone
Je vois le problème: dans votre nom de la méthode, la
UITableView
variable est nomméeltableView
, pastableView
. Changer detableView
.OriginalL'auteur kevboh
cell.detailTextLable.text
devrait êtrecell.detailTextLabel.text
. Il ressemble à une simple faute d'orthographe de l'étiquette.OriginalL'auteur Atcooper
Toutes les réponses mentionnées ici sont vraiment une solution de contournement, c'est à dire à l'aide de storyboard.
Voici une façon de le faire uniquement dans le code.
Fondamentalement, au lieu d'enregistrer l'identifiant de la cellule dans le viewDidLoad faire qu'une seule fois dans cellForRowAtIndexPath: la méthode. Également réinitialiser la cellule enregistrée dans le viewDidLoad __sCellRegistered = 0;
OriginalL'auteur vp_gold