Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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 显示多个ViewController';容器ViewController中的视图层次?_Ios_Objective C_Uiviewcontroller - Fatal编程技术网

Ios 显示多个ViewController';容器ViewController中的视图层次?

Ios 显示多个ViewController';容器ViewController中的视图层次?,ios,objective-c,uiviewcontroller,Ios,Objective C,Uiviewcontroller,最近,我在一个有多个ViewController的项目中工作,控制器的视图层次需要同时显示在屏幕上,下面的链接(它是一张图片)是我的设计 MainViewController是一个容器ViewController,我向其中添加了MenuViewController和PictureViewController,如下所示: // Create the controllers MainViewContorller* mainVC = [[MainViewController alloc] init]

最近,我在一个有多个ViewController的项目中工作,控制器的视图层次需要同时显示在屏幕上,下面的链接(它是一张图片)是我的设计

MainViewController是一个容器ViewController,我向其中添加了MenuViewController和PictureViewController,如下所示:

// Create the controllers
MainViewContorller* mainVC = [[MainViewController alloc] init];
MenuViewController* menuVC = [[MenuViewController alloc] init];
PictureViewController* pictureVC = [[PictureViewController alloc] init];

// add MenuViewController to MainViewController as its child controller
[mainVC addChildViewController:menuVC];
[mainVC.view addSubview:menuVC.view];
[menuVC didMoveToParentViewController:mainVC];

// add PictureViewController to MainViewController as its child controller
[mainVC addChildViewController:pictureVC];
[mainVC.view addSubview:pictureVC.view];
[pictureVC didMoveToParentViewController:mainVC];

菜单视图和图片视图现在显示在屏幕上,问题是只有图片视图可以响应UI事件(如点击手势)。似乎只有我添加到容器ViewController的最后一个视图层次结构可以响应UI事件,为什么?在一个容器ViewController中显示多个ViewController的视图层次结构的正确方法是什么?

最后,问题解决了,正如rdelmar所说,我忘记了设置子视图的框架,苹果的文档(第117页)也提到了这一点,代码应该是:

// Create the controllers
MainViewContorller* mainVC = [[MainViewController alloc] init];
MenuViewController* menuVC = [[MenuViewController alloc] init];
PictureViewController* pictureVC = [[PictureViewController alloc] init];

// add MenuViewController to MainViewController as its child controller
[mainVC addChildViewController:menuVC];
[menuVC setFrame:frameOfMenuView];          // set the correct frame to menu view
[mainVC.view addSubview:menuVC.view];       // add menu view as sub view to main view
[menuVC didMoveToParentViewController:mainVC];

// add PictureViewController to MainViewController as its child controller
[mainVC addChildViewController:pictureVC];
[pictureVC setFrame:frameOfPictureView];    // set the correct frame to picture view
[mainVC.view addSubview:pictureVC.view];    // add picture view as sub view to main view
[pictureVC didMoveToParentViewController:mainVC];

您需要为要添加的子视图设置框架(或添加约束)。视图的无响应可能是由于视图超出了其superview的边界,或大小为零。是否要使用按钮操作更改containerView中的viewController,对吗?