2个视图控制器,每个都有自己的xib,其中一个是另一个的子类?

Posted

技术标签:

【中文标题】2个视图控制器,每个都有自己的xib,其中一个是另一个的子类?【英文标题】:2 view controllers, each has its own xib, one of them is a subclass of another? 【发布时间】:2017-06-16 07:36:05 【问题描述】:

我有一个继承自 UIViewController 的自定义类。让我称之为“VC1”。我需要对它进行子类化(使用自己的 xib 创建“VC2”)。然后我尝试创建和使用VC2。问题是使用了 VC2,但使用了 VC1 中的 xib。

如何解决这个问题?可能是因为 VC1 是用 Obj-C 编写的,而 VC2 是用 Swift 编写的?

初始化代码:

let vc = ViewController2(nibName: "ViewController2", bundle: nil)

【问题讨论】:

你需要覆盖选择笔尖的VC1的代码。 试图覆盖,试图创建一个文件并指定一个具体的 xib 文件 - 当 VC2 继承 VC1 时不起作用 您能说明一下您是如何在 VC1 中附加 nib 的吗? 这是一个简单的观点——没有什么特别的东西会影响这种行为 你明确告诉 VC1 在你的代码中选择一个 nib 吗? 【参考方案1】:

这种方式通常应该有效。但我的情况很特殊:

第一个视图控制器包含代码:

NSArray* items = [[NSBundle mainBundle] loadNibNamed:@"ViewController1" owner:self options:nil];
IRSubscriptionInfoView* pageContentView = [items objectAtIndex:1];

所以在 vc2 的代码中,我仍然尝试从 nib 获取 vc1 的一些信息。

可以通过替换 @"ViewController1" -> [self nibName] 并添加对 items.count 的检查来修复

这是我自己问题的答案

【讨论】:

请使用您问题上的编辑链接添加更多信息。 Post Answer 按钮应仅用于问题的完整答案。 - From Review 这是我问题的答案。有什么问题? 如果这是您问题的答案,那么请接受它作为您问题的答案。从您的答案文本中,不清楚这是否真的是答案,但更多的是一个问题:“这种方式应该通常有效。但我的情况很特殊”。 我不能 - “你可以在 2 天内接受你自己的答案” 很公平。但请确保立即清楚这就是答案。写下类似的内容:“这是我自己问题的答案”。我看不出这是一个答案。它看起来更像是对您原始问题的评论或附加信息。

以上是关于2个视图控制器,每个都有自己的xib,其中一个是另一个的子类?的主要内容,如果未能解决你的问题,请参考以下文章

有 XIB 文件限制吗?

按下按钮时如何加载另一个xib

从 xib 获取特定的视图控制器?

iPhone 70 种不同视图的最佳设计?

多个控制器使用一个 xib

在 xib 文件视图之外设置视图以适应滚动视图 + 不同的 xib 用于方向 - iOs