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