2011-09-20 56 views
1

添加的tableView在viewDidLoad中我一个实现代码如下添加到navigationController这样的:到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

插入 的NSLog(@ “%@”,[recherchePartenaireTypePartenaireViewController描述]); 并告诉我你可以在控制台中看到什么。 –

+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通过在它自己的视图上推动下一个控制器的视图来处理推送。

这里是一个很好的苹果样品,可以帮助你:) http://developer.apple.com/library/ios/#samplecode/TheElements/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007419

+0

这个UIViewController的子类将只包含tableview吗?所以我必须在.xib上放置一个tableview?并且didSelectRowAtIndexPath方法将在.m文件上? – Gabrielle

+0

是的,这是正确的:)看看我刚刚添加的示例。 – Zoleas

0

在你的代码uitableview不是一个导航类型view.So,当你添加UITableview导航控制器的视图,superview是uitableview.Ans在didselectrowAtIndexPath中,您推送的是UITableview,但不在NavigationController上。因此,请将UITableview作为navigationtype.And,然后将其添加到navigationController.And并执行相同的操作。