0

我有一个 HomeViewController.m ,我在其中推送 SpecificViewController self.navigationController

 SpecificViewController *specificViewController= [[SpecificViewController alloc] initWithNibName:@"SpecificViewController" bundle:nil];  
 [self.navigationController pushViewController:specificViewController animated:YES];

在SpecificViewController.m 我插入一个子视图

FirstViewController *firstViewController = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
[self.view insertSubview:firstViewController.view atIndex:0];

在FirstViewController.m 中,有一个tableview。问题是如何通过 navigationController 推送新的 ViewController,我在下面尝试过,但它不起作用。

-(void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath    
{
 DetailTableViewController *detail = 
 [[DetailTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
 [self.navigationController pushViewController:detail animated:YES];
 [detail release];
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}

我还是尝试了一个新的 UINavigationController,

UINavigationController *NEWnavigationController;
NEWnavigationController=[[UINavigationController alloc] init];                
[NEWnavigationController pushViewController:detail animated:YES];

但它仍然没有工作。你能给我什么建议吗?

4

1 回答 1

1

你的方法有很多问题。

首先,SpecificViewController 是您加载的第一个视图控制器吗?如果是,则不要推送此视图控制器,而是将其设置为应用程序委托中的根视图控制器,如下所示

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:[[SpecificViewController alloc] init];

这将确保您的导航控制器已设置并且出现的第一个视图控制器是 SpecificViewController

其次,您不要将视图控制器作为子视图插入。如果您尝试加载第二个视图控制器,则将其推送到导航控制器堆栈上。您可以从 SpecificViewController 执行此操作,如下所示

FirstViewController *firstViewController =[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];

[self.navigationController pushViewController:firstViewController animated:YES];
于 2011-06-16T19:54:32.023 回答