同一视图控制器的多个UI变体

时间:2017-10-06 01:33:48

标签: ios swift user-interface

我正在开发一个练习应用程序,其中UI取决于练习的类型。有些练习将问题作为文本和答案作为文本。有些练习将问题作为文本和答案作为图像。另一个变体是问题中的图像和文字以及答案中的图像。我根据API从特定练习中获得的值创建了一个问题对象。该对象有许多字段作为可选字段。例如,图像是可选的。现在我面临的挑战是处理这种动态UI的最佳方法是什么。用简单的英语,如果它有图像,则显示imageView,如果它没有图像,则不要显示imageView并相应地调整其他UI元素。

1 个答案:

答案 0 :(得分:1)

您可以拥有一个UIViewController子类,以及许多不同的故事板,每个故事板都有不同的布局和子视图。

  • 每个故事板都将视图控制器的类设置为身份检查器中的自定义类。

  • 您的视图控制器具有所有可能子视图的插座,每个故事板将其子视图连接到与其相关的插座。

  • 当您需要呈现字符串的特定变体时,可以从特定于案例的故事板中实例化视图控制器(以编程方式或使用segues和storyboard参考)。

如果您只需要在一种情况下禁用一个特定的子视图,则可以执行以下操作之一:

  • 将子视图的isHidden属性设置为false。它会留在原地,并占据同一区域,但看不见。
  • 通过调用removeFromSuperview()将其从主视图中删除。但是,如果其他剩余的子视图依赖于针对其布局的已删除子视图的约束,请注意。