代码之家  ›  专栏  ›  技术社区  ›  Nnp

添加子视图后self.navigationcontroller为零

  •  1
  • Nnp  · 技术社区  · 16 年前

    这是我的产品控制器。

    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],它是零, 现在如何处理这个问题。我准备给出更多的代码和细节来更清楚地说明。谢谢

    5 回复  |  直到 15 年前
        1
  •  2
  •   bpapa    16 年前

    您在哪里创建导航控制器?在某种程度上(可能是在应用程序代理中),您必须具有如下功能:

    ProductsController *productsController = // create ProductsController
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:productsController];
    

    然后将导航控制器的视图作为子视图添加到窗口中。

    另一件事是,您似乎在一个屏幕上使用了太多的视图控制器。苹果公司建议每个屏幕只有一个。

        2
  •  1
  •   NicTesla    15 年前

    我最近也有同样的问题!我“弹出”([self.navigationcontroller popviewcontrolleranimated:yes])视图中的视图控制器将显示:视图控制器的方法。所以我刚刚删除了这段代码,并在视图中插入了相同的代码did显示:方法,它起作用了!

        3
  •  0
  •   Nnp    16 年前

    我找到了解决这个问题的方法。 现在我要做的是传递父控制器的引用,在本例中是productsController,并通过编写的方法来推送下一个视图。接下来,我调用parent方法来推送这样的下一个视图 [父pushnextview]; 到目前为止一切都很好,希望这是我做我想做的事情的好方法。

        4
  •  0
  •   Karsten Silz    16 年前

    昨天我遇到了一个类似的问题:

    Tab Bar View - Table View - View

    在表视图控制器中,我想推“细节视图”控制器,但是 [self navigationController] nil 在这里。解决办法是这样安排:

    Tab Bar View - Navigation View - Table View - View

    使用附加导航控制器, [自动导航控制器] 现在在表视图控制器中工作。

        5
  •  0
  •   Rio Bautista    15 年前

    我刚发现导航控制器为什么总是零。整个视图系列应包含在uinavigationController中。这意味着层次结构中的第一个视图必须是rootviewcontroller。BPAPAS代码应该有效。