问题
here is my productscontroller.h
ProductListViewController *productListViewController;
ProductGridViewController *productGridViewController;
UIButton *flipIndicatorButton;
and i am adding list and gridview as a subview like this in my implementation
ProductListViewController *listController = [[ProductListViewController alloc] initWithNibName:@"ProductListView" bundle:nil];
self.productListViewController = listController;
self.productListViewController.CurrentSale = CurrentSale;
[self.view insertSubview:listController.view atIndex:0];
but in when i tried to push detailview controller from ProductListViewController.m like this
ProductDetailViewController *productDetailViewController = [[ProductDetailViewController alloc] init];
productDetailViewController.productIndexPath = indexPath;
[self.navigationController pushViewController:productDetailViewController animated:YES];
it just does not work, then i check [self.navigationController] , it was nil, now how to deal with this problem. i am ready to give some more code and detail to make more clear. thanks
回答1:
Where are you creating the Navigation Controller? At some point (probably in your App Delegate) you have to have something like this:
ProductsController *productsController = // create ProductsController
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:productsController];
And then add the navController's view as a subview to your window.
The other thing is that you appear to be using too many View Controllers for one screen. Apple recommends only one per screen.
回答2:
I had the same problem recently! I "poped" ([self.navigationController popViewControllerAnimated:YES]) the viewController in the viewWillAppear: method of the viewcontroller. So I just removed this code and inserted the same code in the viewDidAppear: method and it worked!
回答3:
i found workaround for this problem. now what i am doing is i am passing ref of parent controller in this case ProductsController and written method to push next view. following this now i am calling parent method to push next view like this [parent pushNextview]; so far it works fine, hope this is good way of doing what i wanted to.
回答4:
I ran into a similar issue yesterday:
Tab Bar View - Table View - View
In the table view controller, I wanted to push the "detail view" controller, but [self navigationController]
was nil
here. The solution was to go to this arrangement:
Tab Bar View - Navigation View - Table View - View
With the additional navigation controller, [self navigationController]
now worked in the table view controller.
回答5:
I just found out why the navigationController is always nil. Your whole series of views should be contained in a UINavigationController. This means that the first view in your hierarchy will have to be your rootViewController. bpapas code should work.
来源:https://stackoverflow.com/questions/1983620/self-navigationcontroller-is-nil-after-adding-subview