使用带有故事板和导航的容器视图

时间:2014-05-25 15:54:49

标签: ios objective-c storyboard container-view uicontainerview

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

我写的代码是这样的: (FirstWinViewController.m)

#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.
}

(ContainerClassViewController.m)

#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;
    }

}

它正如我想要的那样工作。 我的问题是:

。根据Apple的规则是否正确?

。这种方法是否使用更多内存,留下垃圾或使用更多资源,而不是通过代码创建Container视图并使用AppDelegate来管理它们的示例?

提前致谢。

1 个答案:

答案 0 :(得分:2)

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

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

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

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

您可以在此链接中看到该项目: https://github.com/DuncanMC/test