2011-06-14 2 views
6

Je ne suis absolument pas certain de la raison pour laquelle la vue accessoire ne fonctionne pas. Je veux simplement que du texte apparaisse à droite de UITableViewCell (ainsi qu'à gauche), mais seul le texte de gauche est affiché.Accessoire UITableViewCellAffichez pas l'affichage

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"SwitchCell"]; 

    if (cell==nil){ 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"SwitchCell"] autorelease]; 
     UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5, 0, 60, 30)]; 

     cell.textLabel.text = @"left text"; 
     label.text = @"right text"; 

     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

     cell.accessoryView = label; 
     [label release]; 

    } 
    return cell; 
} 

Des idées? Merci.

+0

Je suggère que vous donniez d'abord l'alignement de l'étiquette à droite. Par défaut, l'alignement de l'étiquette doit être laissé. Donc deux textes l'un sur l'autre pourraient être le problème. Et puis vous pouvez juste dire: [cell.contentView addSubView: label]; –

Répondre

24
cell.accessoryView = label; 

vous définissez votre accessoryView être une étiquette de sorte que vous n'allez voir aucun indicateur de divulgation. Si vous voulez titre et le texte de détail dans votre cellule init avec UITableViewCellStyleValue2 comme ça ...

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:@"cellType"] autorelease]; 

... puis définir le titre et les détails comme ça ...

cell.textLabel.text = @"Title"; 
cell.detailTextLabel.text = @"Description"; 

Pour avoir une idée des différents construits dans les styles tableau vérifier l'image suivante ...

enter image description here

Vous pouvez régler la Textlabel et detailTextLabel à s uit votre goût.

+0

Bien que cela ne répond pas directement à ma question (j'ai un UILabel qui fonctionne comme un accessoireVoir ailleurs dans mon application, donc je ne sais pas pourquoi cela ne fonctionne pas ici), vous m'avez certainement fourni d'excellentes alternatives. La principale préoccupation que j'ai, cependant, c'est que le texte est tronqué. Est-ce qu'il n'y a aucun moyen de contourner cela (sauf si j'utilise ma propre cellule personnalisée)? –

+0

Ces alternatives, j'en ai conclu, étaient la bonne façon de procéder. –

+0

Merci, cela a résolu mon problème! –

6

Pourquoi cela? Vous ne pouvez pas avoir les deux.

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
+0

True. Mon erreur. Mais néanmoins, ma question est toujours si vous sortez cette ligne de code. –

3
-(id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier 

a été dépréciée dans iOS 3.0

utiliser:

-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 

Pass en soit UITableViewCellStyleValue1 ou UITableViewCellStyleValue2 et définissez les propriétés textLabel et detailTextLabel que vous avez besoin.

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewCell_Class/Reference/Reference.html%23//apple_ref/doc/uid/TP40006938-CH3-SW34

0

UITableViewCellStyleValue2 me donne un style bizarre. Je pense que le style le plus souvent demandé est UITableViewCellStyleValue1 (au moins pour mon cas).

0

Rappelez-vous aussi: la propriété accessoryType est ignorée si vous avez des accessoires personnalisésView. Donc, cette ligne de code est en excès.

Questions connexes