1

我正在使用容器视图构建应用程序。我一直在浏览互联网以查找有关如何正确使用它的示例,但不幸的是,我发现的示例很少,而且到目前为止,它们都没有按照我打算的方式使用故事板。这是我的故事板的图片: 应用方案

我写的代码是这样的:(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;
    }

}

它完全按照我想要的方式工作。我的问题是:

. 是否符合苹果的规定?

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

提前致谢。

4

1 回答 1

2

我对您的问题和@JoeBlow 的回答感到困惑。

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

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

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

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

于 2014-05-25T18:27:19.990 回答