4

当视图控制器 (VC) 有大量视图和子视图时,修改子视图变得非常困难,因为我什至无法完全看到它(它隐藏在其他一些子视图后面)。例如,请查看我的一个 VC 的当前状态:视图控制器在 xcode 中有很多视图和子视图

我看不到突出显示的“Congratulations - UILabel”或其 UIView。

有没有办法可以清楚地看到特定视图(可能位于所有其他视图的顶部)?

通常,我将 UIView 拖放到不同的虚拟空白 VC 上,在具有所有约束的 VC 上完全设计视图,最后将其拖放回我的实际 VC。这在大多数情况下都有效,但对我来说似乎是一种低效的方法。我观察到在 iOS6 中查看重叠视图曾经更容易,但在 iOS7 中却非常困难。iOS7 Interface Builder 中是否有任何我缺少的功能?感谢您宝贵的时间。

更新:Spark Inspector会在这里帮助我吗?我是开发新手,所以不想浪费时间尝试和理解新插件,如果它不能帮助我实现我想要的。谢谢。

4

1 回答 1

2

这被广泛认为是 Xcode 的新 Storyboards 功能的弱点之一。它们非常适合需要大量简单控制器的应用程序,但是当您的界面变得复杂时,它们会变得难以使用。大多数有经验的开发人员在某些地方使用 Storyboard,在其他地方使用单独的控制器 XIB,这取决于他们正在构建的内容。

以下是解决您的问题的方法:

步骤 1. 将您的 Storyboard 中的 View Controller 分解为它自己的 XIB

  • 从“文件”菜单中,选择“新建文件”并选择一个空 XIB 文件(从“用户界面”部分)。将其命名为“YourExactVCClassName.xib”。

  • 转到您的故事板。复制您的视图控制器的整个视图,然后将其删除。

  • 将 View Controller 粘贴到新的 XIB 中。将“文件所有者”的类更改为您的视图控制器,并通过从视图中绘制一个出口到文件所有者来设置它的“视图”属性。

当你的应用程序运行时,它会尝试从你的故事板中实例化视图控制器。当它意识到该控制器的情节提要中没有视图时,它会自动找到文件 MyViewController.xib 并从那里加载它。

步骤 2. 将主视图的内容组织成有意义的分离视图。

  • 在上面的示例中,看起来您对游戏的不同状态(游戏结束、高分等)有不同的视图。将其中的每一个从主视图中删除。将控制器放在它自己的 XIB 文件中,您只需将视图拖到控制器周围的空白处即可。您拖出的每个视图都将成为您可以轻松设计和查看的 XIB 文件中的顶级对象。 您不再受困于 iPhone-5 大小的工作空间。

  • 为每个分离的顶级视图创建 IBOutlets,以便您可以在控制器中引用它们。

  • viewDidLoad中,以编程方式将每个单独的视图添加到您的主视图中。请注意,您可能想要设置它们的框架,使它们中的一些不可见等。您必须编写更多代码,但对于易于维护的 XIB,这通常是值得的。

于 2013-11-18T00:26:13.930 回答