Iphone 在表视图中的一个选项中选择某一行

Iphone 在表视图中的一个选项中选择某一行,iphone,objective-c,xcode,uitableview,tableview,Iphone,Objective C,Xcode,Uitableview,Tableview,我创建了一个包含两个部分的表。每个部分有四个单元格。当用户按下某个单元格时,我想通过导航控制器推到一个新视图 然而,有两个部分。我不知道如何区分所选单元格属于中的哪个部分 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 请给我一些提示。多谢各位 这是我的TableViewController.m #import "TableViewController.h"

我创建了一个包含两个部分的表。每个部分有四个单元格。当用户按下某个单元格时,我想通过导航控制器推到一个新视图

然而,有两个部分。我不知道如何区分所选单元格属于中的哪个部分

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
请给我一些提示。多谢各位

这是我的TableViewController.m

#import "TableViewController.h"
#import "LondonController.h"
#import "NewYorkViewController.h"
#import "ParisViewController.h"
#import "TokyoViewController.h"

@implementation TableViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {

    }
    return self;
}

- (void)dealloc
{
    [super dealloc];
    [tableDataSource release];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];

    UITableView *table = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, 460) style:UITableViewStyleGrouped];
    [table setDataSource:self];
    [table setDelegate:self];   

    tableDataSource = [[NSMutableArray alloc]init];

NSMutableArray* sec1 = [[NSMutableArray alloc] init];
[sec1 addObject:@"London"];
[sec1 addObject:@"New York"];
[sec1 addObject:@"Paris"];
[sec1 addObject:@"Tokyo"];
[tableDataSource addObject:sec1];
[sec1 release];

NSMutableArray* sec2 = [[NSMutableArray alloc] init];
[sec2 addObject:@"Elton John"];
[sec2 addObject:@"Michael Jackson"];
[sec2 addObject:@"Little Prince"];
[sec2 addObject:@"SMAP"];
[tableDataSource addObject:sec2];
[sec2 release];

[self.view addSubview:table];

[table release];
}

- (void)viewDidUnload
{
    [super viewDidUnload];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:    (UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

#pragma mark - Table 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{
    if ( tableDataSource == nil )
        return 1;
    return [tableDataSource count];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{    
    NSInteger bucketCount = -1;
    NSObject *target_section;
    if ( tableDataSource == nil )
        return 0;
    if( ( bucketCount = [tableDataSource count] ) < 1 || bucketCount <= section || (target_section = [tableDataSource objectAtIndex:section ]) == nil )
        return 0;
    return [ (NSMutableArray*)target_section count ];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:    [NSString stringWithFormat:@"Cell %i",indexPath.section]];
    if (cell == nil) 
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:[NSString stringWithFormat:@"Cell %i",indexPath.section]] autorelease];
    }

    cell.textLabel.text = (NSString*)[ (NSMutableArray*)[tableDataSource objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];

    return cell;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    if(section == 0)
    {
        return @"City";
    }
    else if(section == 1)
    {
        return @"Person";
    }
    else 
    {
        return @"Nothing;
    }
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{   
    if (indexPath.row == 0) 
    {
        LondonViewController *londonViewController = [[LondonViewController alloc] initWithNibName:@"LondonViewController" bundle:nil];
        taipeiViewController.title = @"London Info";
        [self.navigationController pushViewController:londonViewController animated:YES];   
        [londonViewController release];
    }

    else if (indexPath.row == 1) 
    {
        NewYorkViewController *newYorkViewController = [[NewYorkViewController alloc] initWithNibName:@"NewYorkViewController" bundle:nil];
        newYorkViewController.title = @"New York Info";
        [self.navigationController pushViewController:newYorkViewController animated:YES];   
        [newYorkViewController release];
    }

    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

@end


您应该检查indexPath.section值以确定所选单元格的节。

请参阅NSIndexpath引用:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{   
    NSUInteger section = indexPath.section;
    NSUInteger row = indexPath.row;

    if (section == 0) 
    {
        LondonViewController *londonViewController = [[LondonViewController alloc] initWithNibName:@"LondonViewController" bundle:nil];
        taipeiViewController.title = @"London Info";
        [self.navigationController pushViewController:londonViewController animated:YES];   
        [londonViewController release];
    }

    else if (section == 1) 
    {
        NewYorkViewController *newYorkViewController = [[NewYorkViewController alloc] initWithNibName:@"NewYorkViewController" bundle:nil];
        newYorkViewController.title = @"New York Info";
        [self.navigationController pushViewController:newYorkViewController animated:YES];   
        [newYorkViewController release];
    }

    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}