【问题标题】:Creating complex VC Hierarchy using NIB使用 NIB 创建复杂的 VC 层次结构
【发布时间】:2015-05-01 17:35:10
【问题描述】:

我的 MainVC 包含 2 个选项卡:FirstVC 和 SecondVC。

然后我点击一些我想在所需视图/VC 下方显示的点击。

我正在使用 Nib 进行这个项目,所以我对此有些困惑。

我应该在这里使用那个对象吗?看法?怎么样?

我如何拥有 MainVC 以及基于选项卡隐藏/显示的 2 个视图。

在 FirstVC 中我需要加载 tableView。在 SecondVC - simpleView 中

那么,有人可以给我一些建议如何更巧妙地实现这件事吗?

【问题讨论】:

  • 你不使用情节提要吗?
  • 我想使用它,但我们在团队中工作,将一个故事板文件提供给 2 个开发人员会遇到问题

标签: ios objective-c iphone uiviewcontroller parent-child


【解决方案1】:

您可能想要使用容器视图控制器,我不久前在博客中提到过。 (见http://www.notthepainter.com/container-view-controllers/

此处粘贴的文字以供将来使用:


OS5 添加了许多 iOS 开发人员一直需要的东西,即容器视图控制器。这使您可以将视图控制器放在另一个视图控制器中。出于无数原因,这很棒,但吸引我的是重用和抽象。

我正在开发一个有 2 个类似窗口的应用程序,它们有一个顶部(主体)和一个页脚。最上面的部分很简单,他们每个人都有自己的 UIViewControllers。但是当我将页脚添加到第二个时,我开始思考 DRY,我在重复自己,这绝不是一个好主意。所以我抽象出一个父类,然后我把页脚代码放进去,但我卡住了,我希望我的页脚也是视图控制器。

我记得我参加过一个关于新 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 来添加它,然后我告诉新的它有一个新的父级,最后,添加它的视图。

这只是几行代码,但窗口应该响应两个视图控制器并响应旋转。

【讨论】:

  • 为什么不直接使用标签栏控制器?
  • 对于原始问题是的,对于我的应用程序,2 年前,否。
  • 对,我认为您的帖子是试图回答原始问题。听起来好像 OP 要求的不是一个花哨的、高级的替代解决方案,而是一些非常基本的基础知识指导,以开始使用他的第一个应用程序。
  • 你很可能是对的。我选择提供一个我很容易掌握的答案。我认为情况可能并非如此,因为如果是这样,任何容易获得的教程都会证明这一点。
猜你喜欢
  • 1970-01-01
  • 2015-05-22
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多