Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UINavigationController和UIViewController';s导航控制器属性_Ios_Objective C_Uiviewcontroller_Uinavigationcontroller - Fatal编程技术网

Ios UINavigationController和UIViewController';s导航控制器属性

Ios UINavigationController和UIViewController';s导航控制器属性,ios,objective-c,uiviewcontroller,uinavigationcontroller,Ios,Objective C,Uiviewcontroller,Uinavigationcontroller,我最近偶然发现了这一点,我想知道为什么会这样设计 如果您有一个UINavigationController的子对象的容器视图中有一个嵌入式视图控制器,为什么该子对象的self.navigationController属性没有设置为某个值 苹果文档中关于该主题的内容: 视图控制器层次结构中最近的祖先,即导航控制器。(只读) @属性(非原子、只读、保留)UINavigationController*navigationController 讨论 如果接收器或其祖先之一是导航控制器的子级,则此属性包含

我最近偶然发现了这一点,我想知道为什么会这样设计

如果您有一个
UINavigationController
的子对象的容器视图中有一个嵌入式视图控制器,为什么该子对象的
self.navigationController
属性没有设置为某个值

苹果文档中关于该主题的内容:

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

@属性(非原子、只读、保留)UINavigationController*navigationController 讨论 如果接收器或其祖先之一是导航控制器的子级,则此属性包含所属导航控制器。如果视图控制器未嵌入导航控制器中,则此属性为nil


对我来说,我会想,因为它的父节点嵌入到导航控制器中,它会将它的引用沿着链传递给它的子节点。我错过什么了吗?有没有充分的理由证明情况并非如此?

嗨,我和你有同样的问题。我通过使用以下代码显示视图控制器修复了此问题:

        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(将要显示的我的控制器):


我希望这会有所帮助。

您如何添加子视图控制器?可能出了什么问题。在IB:NavController rootview->ViewControllerA的容器视图embed segue->ViewControllerb中,考虑到它在IB中不起作用,这很有意思。我正在寻找一个IB解决方案,并且想知道这是否是一种故意的状态,而不仅仅是一种疏忽。如果没有其他人对这个问题有任何意见,我会接受这个答案。@Erik我很高兴这有帮助。我不确定这是否可能,但我会看看能找到什么。好的,尽管我很希望答案被接受,但我希望你能找到一个更好的答案:)
 -(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);
}