2011-06-22 119 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