如何处理场景中的交替视图

How to handle alternate views within a scene

我正在修改现有的 iPad 应用程序,我很难处理故事板中非常混乱的场景。应用程序中的几乎每个场景都由多个视图组成,一个位于另一个之上,每个包含一组不同的控件。根据进入场景的情况或数据,隐藏一些视图,显示其他视图。

破译这些场景需要很多时间,即使我弄清楚我需要做出哪些改变,也很难做出这些改变,而且很容易搞砸其他事情。

举个例子,下面的场景有3个视图可能出现(开始视图,结束视图,抽屉历史),视情况而定,它们都被放置在彼此之上...

似乎 是一种糟糕的处理方式,我很难相信这是标准做法,但我没有发现太多阻碍备择方案。我发现人们处理这个问题的方式很少,关于如何设计用户界面的教程似乎过于简单,而且从不处理复杂到 运行 到这个问题的场景。

不幸的是,这个应用程序是我在 iOS 中做用户界面的主要介绍,所以它显然已成为我脑海中的默认解决方案。我试过很多教程,但是他们花了很长时间,而且似乎从来没有达到需要这种技术来解决的情况。

我希望有一个解决方案,场景中的每个备用视图都可以单独布局,并根据需要显示在占位符视图中。

什么是更开明/更易于管理的方法?

这就是 Storyboards/Nibs/Xibs 的效果。我并不是说编写 UI 代码比使用界面生成器更好,但至少对我来说是这样。我相信,据我所知,没有其他方法可以在 Interface Builder 的一个视图控制器中处理这样的多层视图。我以前实际上曾经使用过界面生成器,这也是我添加多层控件的方式。有时某些视图最初是隐藏的,但这可能会使我或其他查看布局的开发人员感到困惑。有时我会扩展 viewcontroller 高度,以了解有一个视图容器,其约束为千常数或负千常数,使其隐藏并准备好在需要显示时设置动画。

有多种方法可以改进和组织您的故事板。您可以将模块分成不同的故事板文件;您可以使用参考资料;避免转场;什么的。还是个人或团队的喜好。

一些参考:

https://cocoacasts.com/organizing-storyboards-with-storyboard-references

https://medium.com/@stasost/xcode-a-better-way-to-deal-with-storyboards-8b6a8b504c06

编辑:

我认为您还可以将单独的视图容器布局到单独的 xib 中,然后在需要时调用它们或布局它们。但这会向您的项目添加更多文件。