我正在使用容器视图构建应用。 我一直在浏览互联网,找到如何正确使用它的例子,但不幸的是,我发现很少的例子,到目前为止,没有一个像我打算那样使用故事板。 这是我的故事板的图片:
我写的代码是这样的: (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来管理它们的示例?
提前致谢。
答案 0 :(得分:2)
我对你的问题和@ JoeBlow的答案感到困惑。
从iOS 6开始,容器视图为您提供了魔力。您可以在IB中将容器视图拖到窗体上,然后从容器视图控制拖动到另一个VC。 IB提供为您创建嵌入式segue。你给它一个标识符,然后ebed segue导致子视图控制器在你的父视图控制器加载时作为子项加载和安装。
您父母的prepareForSegue方法在加载子项时触发,这使您有机会保存指向子项的指针,将父项安装为子项的委托,或者您需要的任何其他设置要做。
我在github上有一个示例项目,它使用2个容器视图来演示这个,每个视图都嵌入了表视图控制器。表视图控制器及其父级使用我定义的简单协议来回通信。
您可以在此链接中看到该项目: https://github.com/DuncanMC/test