在presentModalViewController中使用UINavigationController

来源:互联网 发布:蒙顶甘露 知乎 编辑:程序博客网 时间:2024/05/23 15:40

原文:http://blog.csdn.net/mideveloper/article/details/7798872


手上的项目中登陆界面是写在presentModalViewController中的,但是无法使用UINavigationController,后来费了一些时间来弄,可能因为当时思维比较混乱,没有搞定。

今天查到了一篇文章,http://www.giser.net/?p=857 惯例 原文录入,避免个人博客died

在iOS开发中遇到下面的问题,在presentModalViewController出来ViewController的TableView中无法使用navigationController的pushViewController方法弹出新的页面。

后来发现原因ViewController的navigationController的属性为nil。

解决办法为,在presentModalViewController的时候自己创建一个navigationController,这样ViewController的navigationController属性不为nil,即可使用pushViewController。

代码如下:

[cpp] view plaincopy
  1. POIListViewController * poiListVC = [[POIListViewController alloc] initWithNibName:@"POIListViewController" bundle:nil];  
  2.             poiListVC.poisArray = self.searchResult;  
  3.             poiListVC.delegate = self;  
  4.             UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:poiListVC];  
  5.             [self presentModalViewController:navController animated:YES];  
  6.             [navController release];   
  7.   
  8.             [poiListVC release];  

最后贴上自己的代码

[cpp] view plaincopy
  1. -(IBAction)logout:(id)sender{  
  2.     [ActiveUser sharedActiveUser].logined=NO;  
  3.     self.logoutButton.enabled=[ActiveUser sharedActiveUser].logined;  
  4.       
  5.     UILoginViewController* loginViewController=[[UILoginViewController alloc] initFromNib];  
  6.     UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:loginViewController];  
  7.     navController.navigationBarHidden=YES;  
  8.   
  9.     [[Global sharedGlobal].mainViewController presentModalViewController:navController   
  10.                                                                 animated:NO];  
  11.     [loginViewController release];  
  12.     [navController release];   
  13.       
  14. }  
0 0