如何使用分组表推送新视图?

时间:2010-05-04 12:48:36

标签: iphone uitableview pushviewcontroller

我一直试图在点击一个单元格时推出一个新视图,但绝对没有任何反应。我认为分组样式与普通样式相同。这是我的代码:

-(void)viewDidLoad {
[super viewDidLoad];
contactArray = [[NSArray alloc] initWithObjects:@"iPhone",@"iPod",@"MacBook",@"MacBook     Pro",nil];
shareArray = [[NSArray alloc] initWithObjects:@"Flex",@"AIR",@"PhotoShop",@"Flash",nil];

}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 2;
}


// Customize the number of rows in the table view.
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if(section == 0)
    return [contactArray count];
else
    return [shareArray count];
}

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
if(section == 0){
    return @"Contact";
}else{
    return @"Share";
}
}

-(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{
if(section == 0){
    return @"Footer for Apple Products";
}else{
    return @"Footer for Adobe Softwares";
}
}


// Customize the appearance of table view cells.
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath     *)indexPath {

static NSString *CellIdentifier = @"Cell";

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

// Set up the cell...
if(indexPath.section == 0){
    cell.text = [contactArray objectAtIndex:indexPath.row];
}else{
    cell.text = [shareArray objectAtIndex:indexPath.row];
}
return cell;

}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//NextViewController *nextController = [[NextViewController alloc] initWithNibName:@"NextView" bundle:nil];
//[self.navigationController pushViewController:nextController animated:YES];
if([contactArray objectAtIndex:indexPath.row] == @"iPhone"){
    LandscapeHydrogen *abo = [[LandscapeHydrogen alloc] initWithNibName:@"LandscapeHydrogen" bundle:nil];
[self.navigationController pushViewController:abo animated:NO];
[abo release];
}
}

感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

您可以在didSelectRowAtIndexPath处设置断点,以查看if语句是否为真。

尝试更改

if([contactArray objectAtIndex:indexPath.row] == @"iPhone"){

if([[contactArray objectAtIndex:indexPath.row] isEqualToString:@"iPhone"]){

答案 1 :(得分:1)

  YourNextViewController  *   nextViewController = [[YourNextViewController alloc] initWithNibName: @"YourNextViewController" bundle: nil];  

switch (indexPath.section) {
    case 0:
        nextViewController.title = [_contactArray objectAtIndex: [indexPath row]];
        break;

    case 1:
        nextViewController.title = [_shareArray objectAtIndex: [indexPath row]];
        break;

    default:
        break;
}

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

答案 2 :(得分:0)

解决了

else if (indexPath.section == 1 & indexPath.row == 0){
        FaceBook *nextController = [[FaceBook alloc] initWithNibName:@"FaceBook" bundle:nil];
        [self.navigationController pushViewController:nextController animated:YES];