原文: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。
代码如下:
- POIListViewController * poiListVC = [[POIListViewController alloc] initWithNibName:@"POIListViewController" bundle:nil];
- poiListVC.poisArray = self.searchResult;
- poiListVC.delegate = self;
- UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:poiListVC];
- [self presentModalViewController:navController animated:YES];
- [navController release];
- [poiListVC release];
最后贴上自己的代码
- -(IBAction)logout:(id)sender{
- [ActiveUser sharedActiveUser].logined=NO;
- self.logoutButton.enabled=[ActiveUser sharedActiveUser].logined;
- UILoginViewController* loginViewController=[[UILoginViewController alloc] initFromNib];
- UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:loginViewController];
- navController.navigationBarHidden=YES;
- [[Global sharedGlobal].mainViewController presentModalViewController:navController
- animated:NO];
- [loginViewController release];
- [navController release];
- }