【问题标题】:Show/Hide UI elements in a storyboard depending on the target根据目标在情节提要中显示/隐藏 UI 元素
【发布时间】:2014-11-25 08:31:24
【问题描述】:

我已经阅读了很多关于使用 Xcode 创建精简版和付费版本的内容,并且在我的应用程序中,我正在使用多个目标和预处理器宏,如 this Stackoverflow post 中所述。但是,我不知道如何使用 Storyboard 处理不同的目标。

例如,在我的故事板中,我有一个带有静态单元格的表格视图控制器。在付费版本中,它有四个单元格,在精简版中,有一个额外的单元格,而故事板的其余部分保持不变。有没有办法实现这种行为?

(为精简版创建一个新的故事板(或复制它)对我来说不是一个选择,因为我有几十个视图控制器,并且 98% 的视图和 UI 元素在两个版本中都是相同的。这将使项目难以维护。)

【问题讨论】:

    标签: ios xcode storyboard targets


    【解决方案1】:

    例如,在我的故事板中,我有一个带有静态单元格的表格视图控制器。在付费版本中它有四个单元格,在精简版中有一个额外的单元格,而故事板的其余部分保持不变。有没有办法实现这种行为?

    如果您没有使用静态表来限制自己,那么这个问题一开始就不会出现;您将在代码中配置表格,这可能是有条件的——问题结束。

    就目前的情况而言,故事板中需要两个不同的场景,一个用于付费版,另一个用于精简版。那么:

      1234563 /p>
    • 如果此场景是初始视图控制器,您需要先在代码中实例化它,而不是让 UIApplicationMain 为您执行此操作。或者,在这种情况下,只为这一场景使用两个不同的故事板,然后转到另一个故事板。

    (请记住,在任何情况下,多个故事板都是组织场景的好方法。我不一定指多个替代故事板;多个顺序故事板可以防止您的故事板变得过于复杂。从您的问题中,我听起来好像您需要做的就是了解故事板的工作原理——它们不是魔法,你知道的——并且在使用它们时更加灵活。你的整个deer-in-the-headlights 害怕复制你的故事板——“我有几十个视图控制器”——这表明你已经走错了路。编程就像解决魔方:如果你在中间,你对有人试图改变某事的反应是“不要碰它!”,你做错了。)

    【讨论】:

    • 所以基本上你是说没有办法在特定目标的场景中隐藏单个 UI 元素?当然,我可以复制一个场景,添加一个额外的表格视图单元格并创建两个我在代码中根据目标触发的 segue。但这对我来说似乎有点麻烦,因为每当我更改原始场景的布局时,我也必须对复制的场景执行相同的更改(这是我首先试图通过使用不同的目标来避免的)。
    • 顺便说一句:我同意您的哲学观点 - 理想情况下,任何代码或故事板都应该以易于修改的方式设计。但是在项目中拥有多个故事板有什么好处呢?你能给我一个提示,我可以在哪里阅读更多相关信息?
    • “所以基本上你是说没有办法在特定目标的场景中隐藏单个 UI 元素”。不,我当然不是这么说的。但是您的示例是一个静态表,它纯粹是在情节提要中配置的。如果您使用的是普通的动态表,这会简单得多,因为它的数据源将指示 in code 它有多少个单元格 - 并且代码可以是有条件的。另一个过度依赖故事板的例子,也许是:靠故事板生活的人,死于故事板……
    • “你能给我一个提示,我可以在哪里阅读更多相关信息吗?”自从引入故事板以来,各种 WWDC 视频都谈到了这一点;我不会为你研究他们的名字。
    • 目前,要从情节提要 A 中的视图控制器到情节提要 B 中的视图控制器,您必须通过实例化在视图控制器 A 中手动响应(例如,点击或一些类似的刺激)在代码中查看控制器 B 并将其放入接口中。这并不难——毕竟,过去根本没有故事板,我们都应付得很好——但是,仅供参考,我有理由怀疑最终将有可能自动从一个故事板到另一个。
    猜你喜欢
    • 2014-09-15
    • 2011-03-11
    • 2020-11-07
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    相关资源
    最近更新 更多