繁体   English   中英

在容器ViewContorler中显示多个ViewController的视图层次结构的正确方法是什么?

[英]What is the correct way to display multiple ViewController's view hierarchy in a Container ViewContorler?

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

http://www.lazycatdesign.com/stuff/question.png

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事件(例如,点击手势)。 似乎只有我添加到Container ViewController的最后一个视图层次结构可以响应UI事件,为什么? 在容器ViewContorler中显示多个ViewController的视图层次结构的正确方法是什么?

最终,问题得以解决,正如rdelmar所说,我忘记将框架设置为子视图,苹果的文档《 iOS的View Controller编程指南》 (第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];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM