2010-11-17 22 views
0

Je suis dans le besoin de quelqu'un pour m'aider à commuter des cellules personnalisées lorsqu'il est sélectionné en utilisant didSelectRowAtIndexPath, donc l'idée est d'avoir personnalisé cell1 définir comme un état et quand l'utilisateur le sélectionne cela va disparaître et cell2 se fanera dans lequel montre la capitale de cet état, mais d'autres cellules resteront comme cell1 (ou états) sauf celui qui a été choisi.TableView et les cellules personnalisées

Répondre

1

Voici comment Je le ferais ...

tableView.h:

#import <UIKit/UIKit.h> 
@interface tableView : UITableViewController { 
    NSMutableArray *tableArray; 
} 

- (void)changeTitleAtIndexPath:(NSIndexPath *)indexPath; 

@end 

tableview.m (ajouter ces méthodes):

en - (void) viewDidLoad ajouter:

tableArray = [[NSMutableArray alloc] init]; 
    [tableArray addObject:[NSMutableArray arrayWithObjects:[NSNumber numberWithBool:NO],@"City1",@"Capital1",nil]]; 
    [tableArray addObject:[NSMutableArray arrayWithObjects:[NSNumber numberWithBool:NO],@"City2",@"Capital2",nil]]; 
    [tableArray addObject:[NSMutableArray arrayWithObjects:[NSNumber numberWithBool:NO],@"City3",@"Capital3",nil]]; 
    [tableArray addObject:[NSMutableArray arrayWithObjects:[NSNumber numberWithBool:NO],@"City4",@"Capital4",nil]]; 

changement:

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

    static NSString *CellIdentifier = @"Cell"; 

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

    if (![[[tableArray objectAtIndex:indexPath.row] objectAtIndex:0] boolValue]) { 
     cell.textLabel.text = [[tableArray objectAtIndex:indexPath.row] objectAtIndex:1]; 
    }else { 
     cell.textLabel.text = [[tableArray objectAtIndex:indexPath.row] objectAtIndex:2]; 
    } 




    return cell; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    [self changeTitleAtIndexPath:indexPath]; 
    [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationTop]; 
} 

ajouter:

- (void)changeTitleAtIndexPath:(NSIndexPath *)indexPath{ 
    BOOL newBool = ![[[tableArray objectAtIndex:indexPath.row] objectAtIndex:0] boolValue]; 
    [[tableArray objectAtIndex:indexPath.row] replaceObjectAtIndex:0 withObject:[NSNumber numberWithBool:newBool]]; 
} 
+0

grâce JNK, c'est exactement ce que je cherchais, ce qui est grand . – tosi

0

vous devez utiliser une seule cellule, avec des vues multiples (par des vues avec alpha fixées à la transparence, ou masquer)

lorsque la cellule est sélectionnée, passer les vues à l'intérieur d'un bloc d'animation