使用 NIB 创建复杂的 VC 层次结构
Creating complex VC Hierarchy using NIB
我的 MainVC 包含 2 个选项卡:FirstVC 和 SecondVC。
然后我点击一些我想在下面显示的水龙头 View/VC。
我正在用 Nib 做这个项目,所以我对此有些困惑。
我应该在这里使用那个对象吗?看法?怎么样?
我如何使用 MainVC 和 2 个视图,hidden/shown 基于选项卡。
在 FirstVC 中,我需要加载 tableView。在 SecondVC - simpleView
那么,有人可以给我一些建议,如何更巧妙地实现这件事吗?
您可能想使用容器视图控制器,我前段时间在博客上谈到了这一点。 (参见 http://www.notthepainter.com/container-view-controllers/)
为将来粘贴的文本:
OS5 添加了很多 iOS 开发人员一直需要的东西,容器视图控制器。这使您可以将一个视图控制器放在另一个视图控制器中。出于无数原因,这很棒,但吸引我的是重用和抽象。
我正在开发一个有 2 个相似 windows 的应用程序,它们有一个顶部(正文)和一个页脚。最上面的部分很简单,他们每个人都有自己的 UIViewControllers。但是当我将页脚添加到第二个时,我开始思考 DRY,我在重复自己,这绝不是一个好主意。所以我抽象出一个父级 class 然后我将页脚代码放入其中但我卡住了,我希望我的页脚也成为视图控制器。
我记得我参加过一次关于新 iOS5 功能和容器视图控制器的演讲。经过一番谷歌搜索后,我找到了它。
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// set up the footer contained view, this has nothing to do with table footers, this is below
// the tableview
//
FooterViewController *vc = [[FooterViewController alloc] initWithNibName:@"FooterViewController" bundle:nil];
vc.view.frame = self.footerFPOView.frame;
vc.delegate = self;
[self addChildViewController:vc];
[vc didMoveToParentViewController:self];
[self.view addSubview: vc.view];
}
当然有几点需要注意。首先,万岁,我正在从 xib 文件加载我的页脚。我在外部视图控制器的 xib 中放置了一个名为 footerFPOView 的 UIVIew,这是我一直使用的技巧。 FPO 代表 For Position Only,这让我可以使用界面生成器进行定位。我与协议进行通信,因此与委托进行通信。然后我调用 addChildViewController 来添加它,然后我告诉新的它有一个新的父级,最后,添加它的视图。
这只是几行代码,但 window 应该响应两个视图控制器并响应旋转。
我的 MainVC 包含 2 个选项卡:FirstVC 和 SecondVC。
然后我点击一些我想在下面显示的水龙头 View/VC。
我正在用 Nib 做这个项目,所以我对此有些困惑。
我应该在这里使用那个对象吗?看法?怎么样?
我如何使用 MainVC 和 2 个视图,hidden/shown 基于选项卡。
在 FirstVC 中,我需要加载 tableView。在 SecondVC - simpleView
那么,有人可以给我一些建议,如何更巧妙地实现这件事吗?
您可能想使用容器视图控制器,我前段时间在博客上谈到了这一点。 (参见 http://www.notthepainter.com/container-view-controllers/)
为将来粘贴的文本:
OS5 添加了很多 iOS 开发人员一直需要的东西,容器视图控制器。这使您可以将一个视图控制器放在另一个视图控制器中。出于无数原因,这很棒,但吸引我的是重用和抽象。
我正在开发一个有 2 个相似 windows 的应用程序,它们有一个顶部(正文)和一个页脚。最上面的部分很简单,他们每个人都有自己的 UIViewControllers。但是当我将页脚添加到第二个时,我开始思考 DRY,我在重复自己,这绝不是一个好主意。所以我抽象出一个父级 class 然后我将页脚代码放入其中但我卡住了,我希望我的页脚也成为视图控制器。
我记得我参加过一次关于新 iOS5 功能和容器视图控制器的演讲。经过一番谷歌搜索后,我找到了它。
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// set up the footer contained view, this has nothing to do with table footers, this is below
// the tableview
//
FooterViewController *vc = [[FooterViewController alloc] initWithNibName:@"FooterViewController" bundle:nil];
vc.view.frame = self.footerFPOView.frame;
vc.delegate = self;
[self addChildViewController:vc];
[vc didMoveToParentViewController:self];
[self.view addSubview: vc.view];
}
当然有几点需要注意。首先,万岁,我正在从 xib 文件加载我的页脚。我在外部视图控制器的 xib 中放置了一个名为 footerFPOView 的 UIVIew,这是我一直使用的技巧。 FPO 代表 For Position Only,这让我可以使用界面生成器进行定位。我与协议进行通信,因此与委托进行通信。然后我调用 addChildViewController 来添加它,然后我告诉新的它有一个新的父级,最后,添加它的视图。
这只是几行代码,但 window 应该响应两个视图控制器并响应旋转。