在viewDidLoad中,我将一个tableview添加到navigationController,如下所示:
[self.view addSubview:navigationController.view];
[self.navigationController.view addSubview:tableViewRecherchePartenaire];
当选择tableview中的一行时,我希望此tableview消失,我尝试过这样的事情:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.row==0){
NSLog(@"RecherchePartenaireTypePartenaireViewController...");
[self.navigationController.view removeFromSuperview];
recherchePartenaireTypePartenaireViewController=[[RecherchePartenaireTypePartenaireViewController alloc] init];
recherchePartenaireTypePartenaireViewController.recherchePartenaireViewController=self.view;
[self.navigationController pushViewController:recherchePartenaireTypePartenaireViewController animated:YES];
[recherchePartenaireTypePartenaireViewController release];
}
}
但是tableview消失但是没有出现下一个视图。如何将表视图与navigationController一起使用?请帮忙...我花了很多时间用这个,我可以看到错误......谢谢提前..
答案 0 :(得分:2)
首先,您不得将子视图添加到UINavigationController
的视图中。将您的UITableView
放在UIViewController
的子类中,并将其设为navigationController的rootViewController
。您可以在主xib文件中或以编程方式执行此操作:
navigationController.rootViewController = myTableViewController;
几乎可以保持你的功能:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if(indexPath.row==0){
NSLog(@"RecherchePartenaireTypePartenaireViewController...");
recherchePartenaireTypePartenaireViewController=[[RecherchePartenaireTypePartenaireViewController alloc] init];
[self.navigationController pushViewController:recherchePartenaireTypePartenaireViewController animated:YES];
[recherchePartenaireTypePartenaireViewController release];
}
}
但是这个函数将在myTableViewController中。
在您的代码中,您从视图层次结构中删除了navigationController的视图。所以当你推动某些事情时没有任何事情发生是正常的,因为UINavigationController
通过按下它自己的视图推动下一个控制器的视图来处理推送。
这是一个很好的Apple样本,可以帮助你:) http://developer.apple.com/library/ios/#samplecode/TheElements/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007419
答案 1 :(得分:0)
在您的代码中,uitableview不是导航类型视图。因此,当你将UITableview添加到navigationcontroller的视图时,superview是uitableview.Ans在didselectrowAtIndexPath中你正在推动UITableview而不是在NavigationController上。所以制作UITableview作为navigationtype.And然后将它添加到navigationController.And做同样的事情。