Ios 根据目标显示/隐藏故事板中的UI元素

Ios 根据目标显示/隐藏故事板中的UI元素,ios,xcode,storyboard,targets,Ios,Xcode,Storyboard,Targets,我读过很多关于使用Xcode创建lite和付费版本的文章,在我的应用程序中,我使用了多个目标和预处理器宏,如中所述。然而,我不知道如何用故事板处理不同的目标 例如,在我的故事板中,我有一个带有静态单元格的表视图控制器。在付费版本中,它有四个单元格,在lite版本中,它有一个额外的单元格,而故事板的其余部分保持不变。有没有办法实现这种行为 (为lite版本创建一个新的故事板(或复制它)对我来说不是一个选项,因为我有几十个视图控制器,并且两个版本中98%的视图和UI元素是相同的。这会使项目难以维护。

我读过很多关于使用Xcode创建lite和付费版本的文章,在我的应用程序中,我使用了多个目标和预处理器宏,如中所述。然而,我不知道如何用故事板处理不同的目标

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

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

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

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

目前情况下,故事板中需要两个不同的场景,一个用于付费版本,另一个用于lite版本。然后:

  • 如果此场景由一个序列到达,则需要两个不同的序列到达此场景,并且您将在代码中决定触发哪个序列(并在代码中触发,而不是自动触发)

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


(请记住,在任何情况下,多个故事板都是组织场景的好方法。我的意思不一定是多个备选故事板;多个连续故事板可以防止您的故事板变得过于复杂。从您的问题听上去,您需要做的就是理解故事板的工作原理—它们是你知道,你不是魔法,你要更灵活地使用它们。你的整个前灯中的鹿都害怕复制你的故事板——“我有几十个视图控制器”暗示你已经走错了太远的路。编程就像解决魔方:如果你在中间,你对试图改变某事的人的反应是“不要碰它!”,你错了。

所以基本上你是说没有办法在特定目标的场景中隐藏单个UI元素?当然,我可以复制一个场景,添加一个额外的表视图单元格,并创建两个分段,根据目标在代码中触发。但这对我来说似乎有点麻烦,因为每当我更改ori的布局时ginal场景我也必须对复制的场景执行相同的更改(这是我试图通过使用不同的目标来避免的)顺便说一句:我同意你的哲学观点——任何代码或情节提要都应该以一种易于修改的方式设计。但是,在项目中使用多个情节提要有什么好处?你能给我一个提示,让我在哪里可以读到更多关于它的内容吗?“因此,基本上你是说,对于特定目标,没有办法在场景中隐藏单个UI元素".不,我当然不是这么说。但您的示例是一个静态表,它完全是在故事板中配置的。如果您使用了一个普通的动态表,这会简单得多,因为它的数据源会在代码中指示它有多少个单元格,而代码可能是有条件的。另一个示例可能是,太多地依赖于故事板:靠故事板生活的人,死在故事板上……“你能给我一个提示,我可以在哪里读到更多关于这个的内容?”自故事板引入以来,各种WWDC视频都谈到了这一点;我不打算为您研究它们的名称。目前,要从故事板a中的视图控制器到故事板B中的视图控制器,您必须手动响应(例如,点击或类似刺激)在视图控制器A中,通过实例化视图控制器B并用代码将其放入接口中。这并不难——毕竟,过去根本没有故事板,我们都处理得很好——但是,仅供参考,我有理由怀疑,最终将有可能自动从一个故事板切换到另一个故事板。