2011-06-22 19 views
8

He estado programando una UITableView y cada celda empuja una nueva vista. Todo lo que quiero hacer es agregar dos nuevas secciones, una masculina y una femenina, la primera y la segunda voz deben estar en la sección masculina y la tercera la voz debe estar en la sección femenina.iPhone UITableView Secciones

#import "FirstLevelViewController.h" 
#import "SecondLevelViewController.h" 
#import "DisclosureDetailController.h" 
#import "SecondVoiceController.h" 
#import "ThirdVoiceController.h" 



@implementation FirstLevelViewController 
@synthesize controllers; 

-(void)viewDidLoad { 
    self.title = @"Voices"; 

    NSMutableArray *male = [[NSMutableArray alloc] init]; 


    DisclosureDetailController *th = [DisclosureDetailController alloc]; 
    th.title = @"First Voice"; 
    [male addObject:th]; 
    [th release]; 

    SecondVoiceController *array2 = [SecondVoiceController alloc]; 
    array2.title = @"Second Voice"; 
    [male addObject:array2]; 
    [array2 release]; 

    ThirdVoiceController *array3 = [ThirdVoiceController alloc]; 
    array3.title = @"Third Voice"; 
    [male addObject:array3]; 
    [array3 release]; 




    self.controllers = male; 
    [male release]; 
    [super viewDidLoad]; 
} 

-(void)viewDidUnload { 

    self.controllers = nil; 
    [super viewDidUnload]; 
} 

-(void)dealloc { 

    [controllers release]; 
    [super dealloc]; 
} 

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return [self.controllers count]; 
} 

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

    static NSString *FirstLevelCell= @"FirstLevelCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:FirstLevelCell]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:FirstLevelCell] autorelease]; 
    } 
    NSUInteger row = [indexPath row]; 
    SecondLevelViewController *controller = [controllers objectAtIndex:row]; 
    cell.textLabel.text = controller.title; 
    cell.imageView.image = controller.rowImage; 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    return cell; 
} 

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

    NSUInteger row = [indexPath row]; 

    SecondLevelViewController *nextViewController = [self.controllers 
                objectAtIndex:row]; 

    [self.navigationController pushViewController:nextViewController animated:YES]; 
} 

Todo lo que quiero hacer es añadir dos nuevas secciones de un macho y una hembra, primero y segundo de voz tiene que estar en la sección masculina y la tercera voz tiene que estar en la sección femenina. ¡Por favor, ayúdame en esto por un tiempo!

+0

por favor utilice un título más descriptivo – vikingosegundo

Respuesta

25

El delegado tableView tiene un método llamado numberOfSectionsInTableView. Devuelve la cantidad de secciones que quieres crear.

Luego, en cellForRowAtIndexPath use indexPath otra propiedad [indexPath section] para segregar filas según las secciones.

Un ejemplo

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 2; //one male and other female 
} 

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    switch(section){ 
     case 0: 
     return [male count]; 
     break; 
     case 1: 
     return [female count]; 
     break; 
    } 
} 


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

    static NSString *FirstLevelCell= @"FirstLevelCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:FirstLevelCell]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:FirstLevelCell] autorelease]; 
    } 
    SecondLevelViewController *controller; 
    switch([indexPath section]){ 
     case 0: 
     controller = [male objectAtIndex: [indexPath row] ]; 
     break; 
     case 1: 
     controller = [female objectAtIndex: [indexPath row] ]; 
     break; 
    } 
    cell.textLabel.text = controller.title; 
    cell.imageView.image = controller.rowImage; 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    return cell; 
} 
+0

hey gracias por los comentarios, pero por favor, ¿podría entrar en un poco más de detalle realmente apreciaría algo de código escrito. Gracias, Sam Houghton. – Sam

+2

apple entra en detalle: http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/AboutTableViewsiPhone/AboutTableViewsiPhone.html – vikingosegundo

+0

@sam respuesta actualizada para incluir el ejemplo –

0

Hows esto?

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    // Return the number of sections. 
    return 2; 
} 



- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    // Return the number of rows in the section. 
    switch (section) { 
     case 0: 
      return # of rows in section; 
      break; 
     case 1: 
      return # of rows in section; 
break; 
    } 
    return 0; 
} 
+0

Gracias por la respuesta, pero no funcionó, simplemente puso la primera y la segunda voz en la tabla y se emitió la tercera voz, y todavía no había secciones, gracias Sam Houghton – Sam

Cuestiones relacionadas