手上的项目中登陆界面是写在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];
}