2010-07-19 4 views
1

Je viens de créer une sous-classe de uitableviewcell et l'ai utilisée dans mon cellforrowatindexpath.UITableViewCell sous-classé - arrière-plan pour une position spécifique

après avoir ajouté une cellule simple, UILabel ma ressemble actuellement quelque chose comme ceci: alt text

mon but est de style la cellule comme

alt text

mais comment faire? J'ai d'abord pensé à ajouter une vue d'image et à la renvoyer avec les coins arrondis et la flèche.

mais en réalité ce sont trois types différents d'une cellule. un pour le dessus, un pour la partie du milieu, un pour la partie inférieure d'une section.

des conseils sur la façon de gérer ces trois cellules "personnalisées" dans une sous-classe de uitableviewcell? merci pour tous les conseils!

choise

// si quelque chose ne sait pas, laisser un commentaire! ;)

Répondre

1

ok, maintenant je comprends que vous voulez reconcevoir une vue de tableau groupée. J'ai fait une demande d'échantillon: Download (mediafire.com 55kb)

Voici le code:

#define numberOfRows 5 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return 2; 
} 

- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section { 
    return numberOfRows; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (indexPath.row == 0) 
     return 42; 
    else 
     return 41; 
} 

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *kCustomCellID = @"CustomCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCustomCellID]; 
    if (cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCustomCellID] autorelease]; 

     UIImage *theIMG; 
     if (indexPath.row == 0) // you have to make a fourth image if only one cell exist 
      theIMG = [UIImage imageNamed:@"1.png"]; 
     else if (indexPath.row == numberOfRows -1) // the last cell 
      theIMG = [UIImage imageNamed:@"3.png"]; 
     else 
      theIMG = [UIImage imageNamed:@"2.png"]; 

     UIImageView *mg = [[UIImageView alloc]initWithImage:theIMG]; 
     cell.backgroundView = mg; 
     cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    } 
    // check out how large your image should be if the table is not over the full screen 
    //NSLog(@"Row:%i Width:%f", indexPath.row, cell.backgroundView.frame.size.width); 

    cell.backgroundColor = [UIColor clearColor]; 
    cell.textLabel.text = @"TEXT"; 
    return cell; 
} 
0

L'utilisation de CustomCell peut résoudre votre problème. Apprenez à ajouter UILabel et UIImage dans une cellule.

http://iphone.zcentric.com/2008/08/26/uiimageview-in-a-custom-cell/

+0

ne sais pas si vous avez compris mon problème. J'ai obtenu une cellule personnalisée, j'ai obtenu un label et je sais comment ajouter un uiimage, mais pouvez-vous voir ces coins arrondis dans mon tableview? sur la première cellule d'une section j'ai besoin de coins arrondis sur le dessus, dans la partie centrale je n'ai pas besoin de coins arrondis et sur le bas d'une section, j'ai besoin de coins arrondis sur le fond – choise

+0

Donc autour de vos coins. Ce n'est pas difficile. –

0

vous pouvez utiliser la couche pour modifier une interface utilisateur-élément spécifique. (Par défaut TableView, non groupés)

myTable.layer.cornerRadius = 7.0; 
myTable.layer.borderWidth = 1; 
myTable.backgroundColor = [UIColor colorWithRed:0.89 green:0.89 blue:0.89 alpha:1.0]; 

Obtenir le .layer vous devriez travailler #import <QuartzCore/CAAnimation.h> et aussi relier le QuarzCore.framework (Target Project -> Général -> "Ajouter" -Button)

Pour la flèche, vous devez utiliser une image et remplacer le bouton de divulgation par défaut. Je n'ai pas le temps de faire tout le reste, mais je suis sûr que vous demanderez encore si quelque chose ne va pas;)

+0

merci mais je n'ai aucune idée de comment cela devrait fonctionner. donc tu veux dire que je dois ajouter une couche sur chaque section? – choise

+0

non, le calque est déjà inclus. myTable est la table que j'ai liée comme suit: créer une table dans InterfaceBuilder et la lier à votre ViewController avec 'IBOutlet UITableView * myTable' –

Questions connexes