Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.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 使用superview';将特定子视图加载到容器中;s按钮_Ios_Button_Subview - Fatal编程技术网

Ios 使用superview';将特定子视图加载到容器中;s按钮

Ios 使用superview';将特定子视图加载到容器中;s按钮,ios,button,subview,Ios,Button,Subview,我正在构建一个应用程序,它应该能够将不同的子视图加载到主视图中的容器中,如下所示: 当浅绿色视图加载时,黄色视图应显示在容器内。(忽略黄色视图顶部的按钮。实际上,它们根本不应该在那里) 如果用户按下“播放本地”或“播放youtube”,应用程序将存储一个值,以记住应该加载哪个视图。如果用户按“播放本地”,则应加载其中一个橙色/蓝色/浅蓝色,如果用户按“播放youtube”,则应加载深/棕色/紫色视图 如果按下清除按钮,容器应再次显示黄色视图 如何使绿色控制器中的按钮参考容器内显示的视图?在按下

我正在构建一个应用程序,它应该能够将不同的子视图加载到主视图中的容器中,如下所示:

当浅绿色视图加载时,黄色视图应显示在容器内。(忽略黄色视图顶部的按钮。实际上,它们根本不应该在那里)

如果用户按下“播放本地”或“播放youtube”,应用程序将存储一个值,以记住应该加载哪个视图。如果用户按“播放本地”,则应加载其中一个橙色/蓝色/浅蓝色,如果用户按“播放youtube”,则应加载深/棕色/紫色视图

如果按下清除按钮,容器应再次显示黄色视图


如何使绿色控制器中的按钮参考容器内显示的视图?

在按下按钮时将调用的函数中编写以下代码

   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];

您应该在绿色控制器中实现prepareForSegue。它将在实例化后立即调用,因为它嵌入到导航控制器

-(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];

我理解。我的部分问题是如何让属性显示出来。例如,我应该将名为yellow的属性放在哪里?如果我尝试按住ctrl键并单击并拖动到主ViewController.h文件,则它不会执行任何操作。我想我需要创建一个新文件,但我不知道放在哪里以及如何将其绑定。@marisbest2,我不知道为什么不起作用。该属性可以放在绿色控制器的.h或.m文件(在类扩展名中)中。对不起,我误解了。现在我遇到了一个问题,当我调用preformSegueWithIdentifier:sender:时,我正在推上不能太大的导航堆栈,它会被卡住。@marisbest2,我不知道“不能太大的导航堆栈,它会被卡住”是什么意思。如果我使用performSegueWithIdentifier:sender:则下一个视图会被添加到视图堆栈中。如果我继续向堆栈中添加视图,它最终会阻止我向堆栈中添加新视图,或者看起来是这样。我可以单击按钮并加载橙色和蓝色视图,但如果单击两次,它将重新加载视图,如果单击按钮次数过多,它将停止让我执行分段。我试图跳回根目录,但那只留下了一个空白的白色屏幕