这是我的productscontroller.h
ProductListViewController *productListViewController;
ProductGridViewController *productGridViewController;
UIButton *flipIndicatorButton;
我在我的实现中将list和gridview添加为这样的子视图
ProductListViewController *listController = [[ProductListViewController alloc] initWithNibName:@"ProductListView" bundle:nil];
self.productListViewController = listController;
self.productListViewController.CurrentSale = CurrentSale;
[self.view insertSubview:listController.view atIndex:0];
但当我试图从ProductListViewController.m推送detailview控制器时,就像这样
ProductDetailViewController *productDetailViewController = [[ProductDetailViewController alloc] init];
productDetailViewController.productIndexPath = indexPath;
[self.navigationController pushViewController:productDetailViewController animated:YES];
它只是不起作用,然后我检查[self.navigationController],它是零, 现在该如何处理这个问题。我准备提供更多代码和细节,以便更清楚。感谢
答案 0 :(得分:2)
您在哪里创建导航控制器?在某些时候(可能在你的App代表中)你必须有这样的东西:
ProductsController *productsController = // create ProductsController
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:productsController];
然后将navController的视图作为子视图添加到您的窗口。
另一件事是你似乎在一个屏幕上使用了太多的View Controllers。 Apple建议每个屏幕只有一个。
答案 1 :(得分:1)
我最近遇到了同样的问题!我在视图控制器的viewWillAppear:方法中“poped”([self.navigationController popViewControllerAnimated:YES])viewController。所以我刚刚删除了这段代码并在viewDidAppear:方法中插入了相同的代码并且它有效!
答案 2 :(得分:0)
我找到了解决此问题的方法。 现在我正在做的是我传递父控制器的ref在这种情况下ProductsController和写入方法推送下一个视图。现在,我正在调用父方法来推送下一个这样的视图 [parent pushNextview]; 到目前为止它工作正常,希望这是做我想做的好方法。
答案 3 :(得分:0)
昨天我遇到了类似的问题:
Tab Bar View - Table View - View
在表格视图控制器中,我想推送“详细视图”控制器,但此处[self navigationController]
为nil
。解决方案是采用这种安排:
Tab Bar View - Navigation View - Table View - View
使用附加的导航控制器,[self navigationController]
现在可以在表视图控制器中使用。
答案 4 :(得分:0)
我刚刚发现为什么navigationController总是为零。您的整个视图系列应包含在UINavigationController中。这意味着层次结构中的第一个视图必须是rootViewController。 bpapas代码应该可以工作。