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