我正在构建一个应该能够在主视图中将不同的子视图加载到容器中的应用程序,如下所示:
加载浅绿色视图时,应在容器内显示黄色视图。 (忽略黄色视图顶部的按钮。实际上,它们根本就不存在)
如果用户按下“play local”或“play youtube”,应用程序将存储一个值,记住应加载哪个视图。如果用户按下“播放本地”,则应加载其中一个橙色/蓝色/浅蓝色,如果按“播放youtube”,则应加载暗/棕色/紫色视图。
如果按下清除按钮,容器应再次显示黄色视图。
如何让绿色控制器中的按钮引用要在Container内显示的视图?
答案 0 :(得分:1)
您应该在绿色控制器中实现prepareForSegue。这将在实例化之后立即调用,因为它将segue嵌入到导航控制器中。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(NSURLRequest *)sender {
UINavigationController *nav = segue.destinationViewController;
self.yellow = nav.topViewController; // yellow is a property pointing to your yellow view controller;
}
现在,在您的按钮方法中,您可以根据您的逻辑调用您想要的任何segue,
[self.yellow preformSegueWithIdentifier:@"Orange" sender:self];
答案 1 :(得分:0)
将以下代码写入按下按钮时调用的函数。
UIStoryboard* storyboard = [self storyboard];
PlayLocalViewController *yourView = [storyboard instantiateViewControllerWithIdentifier:@"PlayeLocalControllerID"]; //yourViewis the ViewController object
yourView.view.frame = self.yourContainerView.bounds;
//youContainerView is the containerView property.
[self.yourContainerView addSubview:yourView.view];
[self addChildViewController:yourView];
[yourView didMoveToParentViewController:self];