UINavigationController和UIViewController的导航控制器属性

时间:2014-08-22 16:42:12

标签: ios objective-c uiviewcontroller uinavigationcontroller

我最近遇到过这种情况,我想知道为什么这样设计。

如果您的UINavigationController的孩子的容器视图中包含嵌入式视图控制器,为什么这个孩子的self.navigationController属性不能设置为什么?

来自Apple Doc的主题:

  

视图控制器层次结构中最近的祖先,它是导航控制器。 (只读)

     

@property(nonatomic,readonly,retain)UINavigationController * navigationController   讨论   如果接收器或其祖先之一是导航控制器的子节点,则此属性包含拥有的导航控制器。如果视图控制器未嵌入导航控制器中,则此属性为nil。

对我而言,我认为因为它的父母已经嵌入到导航控制器中,它会将它的链接传递给它的孩子。我错过了什么吗?是不是有充分的理由呢?

1 个答案:

答案 0 :(得分:1)

您好我遇到了同样的问题。我通过使用此代码来显示视图控制器来修复它:

        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];

        AboutTheAppViewController *loginVC = [storyboard instantiateViewControllerWithIdentifier:@"aboutMenuSegueID"];
        [self addChildViewController:loginVC];
        [loginVC didMoveToParentViewController:self];

        [self.view addSubview:loginVC.view];

然后我将它添加到AboutTheAppViewController(我将要显示的控制器)中:

 -(void)willMoveToParentViewController:(UIViewController *)parent

{
     NSLog(@"FirstViewController moving to or from parent view controller");
 //    self.view.backgroundColor=[UIColor blueColor];
}

-(void)didMoveToParentViewController:(UIViewController *)parent
{
   NSLog(@"FirstViewController did move to parent view controller");
//    self.view.frame = CGRectMake(20, 20, 280, 528);
}

我希望它有所帮助。