2010-11-10 51 views
0

HI,如何在tableview中插入一個新的viewController,這是一個導航控制器的插入視圖?

我在我通過self.navigationController推SpecificViewController一個HomeViewController.m,

SpecificViewController *specificViewController= 

[[SpecificViewController的alloc] initWithNibName:@ 「SpecificViewController」 束:無];
[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,有實現代碼如下。問題是我如何通過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]; 

,但它仍然沒有奏效。你能給我任何建議嗎?

回答

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]; 
相關問題