Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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 将容器视图与故事板和导航一起使用_Ios_Objective C_Storyboard_Container View_Uicontainerview - Fatal编程技术网

Ios 将容器视图与故事板和导航一起使用

Ios 将容器视图与故事板和导航一起使用,ios,objective-c,storyboard,container-view,uicontainerview,Ios,Objective C,Storyboard,Container View,Uicontainerview,我正在使用容器视图构建一个应用程序。 我一直在浏览互联网,寻找如何正确使用它的例子,但不幸的是,我发现很少有例子,到目前为止,没有一个像我打算的那样使用故事板。 以下是我的故事板的图片: 我写的代码如下: (FirstWinViewController.m) (ContainerClassViewController.m) 这正是我想要的工作方式。 我的问题是: 。按照苹果的规则,这是正确的吗 。与通过代码创建容器视图并使用AppDelegate管理它们的示例相比,这种方法是否使用了更多内存、

我正在使用容器视图构建一个应用程序。 我一直在浏览互联网,寻找如何正确使用它的例子,但不幸的是,我发现很少有例子,到目前为止,没有一个像我打算的那样使用故事板。 以下是我的故事板的图片:

我写的代码如下: (FirstWinViewController.m)

(ContainerClassViewController.m)

这正是我想要的工作方式。 我的问题是:

。按照苹果的规则,这是正确的吗

。与通过代码创建容器视图并使用AppDelegate管理它们的示例相比,这种方法是否使用了更多内存、留下垃圾或使用了更多资源


提前谢谢。

我对你的问题和@JoeBlow的答案都感到困惑

从iOS 6开始,容器视图为您带来了魔力。在IB中将容器视图拖到窗体上,然后控制从容器视图到另一个VC的拖动。IB提供为您创建嵌入式segue。您给它一个标识符,然后ebed segue使子视图控制器在加载父视图控制器时作为子视图进行加载和安装

在加载子对象时,会触发父对象的prepareForSegue方法,这使您有机会保存指向子对象的指针,将父对象作为子对象的委托安装,或者执行任何其他需要执行的设置

我在github上有一个示例项目,它使用2个容器视图演示了这一点,每个容器视图都嵌入了表视图控制器。表视图控制器及其父级使用我定义的简单协议来回通信


你可以在这个链接上看到这个项目:

Duncan C,谢谢你的回答。我在容器视图中获取viewcontroller指针的方法确实有效,但您使用的segue方法也有效,似乎是一种更好的做法。神奇?它很容易在代码中实现,代码可能会显示在盒子里。@Pétur好的,魔术是一种夸大其词。为了手动完成这项工作并使一切正常工作,您必须进行大量的内务管理。正如Duncan在上文中所说:“我不知道如何在IB中而不是在代码中设置指向孩子的链接”。不幸的是,在故事板中仍然没有办法完成这一部分。这里详细介绍了这一部分。。。向下滚动至“标识符…”部分。就这么简单。
#import "FirstWinViewController.h"
#import "ContainerClassViewController.h"

@interface FirstWinViewController ()

@end

@implementation FirstWinViewController

- (IBAction)clickOne:(id)sender {

    ContainerClassViewController *viewContained = [[self.childViewControllers[0] viewControllers] objectAtIndex:0];

    [viewContained gotoSegue:1];

}
- (IBAction)clickTwo:(id)sender {

    ContainerClassViewController *viewContained = [[self.childViewControllers[0] viewControllers] objectAtIndex:0];

    [viewContained gotoSegue:2];

}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
#import "ContainerClassViewController.h"

@interface ContainerClassViewController ()

@end

@implementation ContainerClassViewController

-(void)gotoSegue:(int)umOuDois {

    switch (umOuDois) {
        case 1:

            [self.navigationController popToRootViewControllerAnimated:NO];

            [self performSegueWithIdentifier:@"seguePush1" sender:nil];
            break;

        case 2:

            [self.navigationController popToRootViewControllerAnimated:NO];

            [self performSegueWithIdentifier:@"seguePush2" sender:nil];
            break;

        default:
            break;
    }

}