2011-06-22 73 views
8

我一直在编程一个UITableView,并且每个单元都推动一个新的视图,我所要做的是添加两个新的部分,一个男性和一个女性,第一个和第二个语音需要在男性部分和第三个部分声音需要在女性部分。iPhone UITableView部分

#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]; 
} 

所有我想要做的就是添加了两个新节一两雄一雌,第一和第二的声音必须在男性部分和第三语音需要在女款。请帮助我们坚持一段时间!

+0

请使用更具描述性标题 – vikingosegundo

回答

25

该tableView委托有一个方法称为numberOfSectionsInTableView。返回您想要创建的部分的数量。

然后,在cellForRowAtIndexPath中使用indexPath的其他属性[indexPath section]来根据节来分隔行。

一个例子

- (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

的反馈嘿感谢,但请你可以进入更详细一点真的很感激一些编写的代码。谢谢,萨姆霍顿。 – Sam

+2

苹果细节:http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/AboutTableViewsiPhone/AboutTableViewsiPhone.html – vikingosegundo

+0

@sam更新的答案包括示例 –

0

怎么样了呢?

- (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

谢谢你的回复,但没有奏效,只是把第一个和第二个声音放在桌上,第三个声音去了,还没有部分,感谢Sam Houghton – Sam