如何在MainViewController的中间添加一个SubViewController

时间:2012-08-23 17:21:26

标签: uiviewcontroller modalviewcontroller

我想在主viewcontroller中添加一个subviewcontroller,但我只想覆盖一个部分,而不是所有屏幕。我希望它在屏幕中间。而且,想知道我是否可以使这个subviewcontroller透明,所以我仍然可以看到我的主viewcontroller的图像背景。 目前,我有我的mainviewcontroller,我使用这种方式添加另一个viewcontroller:

MenuAllEntriesViewController *menuAE = [[MenuAllEntriesViewController alloc] init];
[menuAE setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentModalViewController:menuAE animated:YES];

但我的subviewcontroller涵盖了所有的屏幕...... 谢谢

1 个答案:

答案 0 :(得分:0)

以编程方式执行此操作: 首先将空UIView添加到主视图中。同时从MainWindowController创建一个IBOutlet到视图。这将是子视图控制器的容器视图。只需将其大小和位置设置为您想要显示子视图的位置。

然后在MainWindowController.m中,您可以使用以下代码添加一个子视图控制器,其视图显示在主视图的指定视图中:

//keep a strong reference to the view controller
self.otherViewController = [[OtherViewController alloc] init]; 
[self addChildViewController:otherViewController];
//set the frame
CGFloat width = containerView.frame.size.width;
CGFloat height = containerView.frame.size.height;
self.otherViewController.view.frame = CGRectMake(0, 0, width, height);
[containerView addSubview:self.otherViewController.view];
[self.otherViewController didMoveToParentViewController:self];

如果您使用Storyboards并定位iOS 6,则甚至不需要进行任何编程。在Storyboard视图(以前称为Interface Builder)中,您只需将Container View从对象库中删除到主视图即可。 Interface Builder将自动创建子视图控制器,但您也可以将包含segue指向任何其他视图控制器。