Xcode:分享两个目标之间的主要故事板

问题描述:

我不会在家里这样做,但我在工作。 (即反应像“你不应该想这样做”不会洗。)Xcode:分享两个目标之间的主要故事板

  • 目标:恢复到一个共享的主要故事板的两个目标。
  • 症状:网点似乎没有连接。
  • 已经尝试过
    • 从设备
    • 删除应用程序做一个干净的构建
    • 周围的故事板XML戳(一切看起来如预期)

我继承了一个有两个目标的项目,每个目标都有自己的故事板。目标分享确切相同的代码。第二个目标的故事板是从第一个目标中克隆出来的。它的差异很小:主要是背景图片不同。 全部出口转到相同代码与第一个故事板中的相应出口一样。 (AFAIK)

现在,第一个简单的步骤是仅告诉第二个目标使用第一个目标的主要故事板。这发生在目标>常规>部署信息中。 (或者在应用程序的plist文件中,针对黑客)。适当的故事板正在Copy Bundle Resources构建阶段中复制。

但是,当应用程序运行时,在启动屏幕消失之前(即加载主视图),我们会崩溃并出现NSUnknownKeyException。对于两个故事板中似乎都正确连接的插座。 (当然对同一个伊娃)

现在,期待这个工作马上就要求太多了。很显然,我必须在每个目标的基础上处理不同的背景图像。但是我不认为基本理念为什么不可行的根本原因。如何继续,欢迎提出建议。 (参考“星际迷航”集“Spock的大脑”只会第一次有趣。)

+0

什么是未知键?只要两个目标中的类名相同,并且所有@IBOutlets都存在,它就可以工作。 – Paulw11

+0

未知键实际上是ViewController的一个ivar的名称,它在两个故事板中都正确连接到IB中的插座。所以,正如我们三个人显然认为的那样,它应该起作用。至少这给了我一些鼓励,我不想尝试一些不可能的事情。将继续破解。 –

+0

关键是“activityIndi​​cator”,它是通过@IBOutlet连接到* Storyboard中的相应UI对象的实例变量的正确名称。 (这个插座是按字母顺序排列的,可能是运行时第一个尝试连接的插座。)我删除并重新建立了连接,但无济于事。我已经覆盖了setValue(_:forKey)并设置了一个断点,无论如何发生了崩溃,并且在断点处没有停止。当我回到旧的故事板(几乎在所有方面都一样)时,一切都很好。神秘仍在继续。 –

我已经完成了这个工作,它确实有效。如果您的应用程序或应用程序购买有细微差异,并且其中包含应用程序价格的所有购买的另一个版本,那么这不是一种不合理的方法。

这听起来像是你的问题更多的东西。你有没有试过打破initWithCoder的类应该有这个插座,并证实你正在进入?第二个目标不同于同一个名字,但是有不同的出口,并且正在被用于构建或类似的东西?

另外,如果您在项目中有其他代码的故事板,您是否确定文件定位是正确的,因此如果两个文件名都相同,那么正确的故事板会被包含在内?同样,对于具有相同类名的两个项目中的任何文件。

我一直回到针对此文件的目标......感觉就像有些东西可能在某处,所以您认为实际使用的不是。

我刚刚在这里尝试了一个新项目,两个目标,删除了第二个从info.plist中删除的所有文件,从第一个目标到第二个目标的所有文件,它工作正常 - 网点连接为预期。

+0

谢谢Clarus,周一将提供建议。 (没有工作的周末!)短篇小说:故事板有不同的名字。当我从第二个应用程序的“复制包资源”列表中删除第一个故事板时,我很早就发现文件未找到,所以我相信我正在使用正确的故事板文件。 MOOF! –

+0

查看对Paulw11的回复。还尝试删除旧的Storyboard;没有预料到有什么区别,也没有看到任何区别。绝对不愿在两个故事板上继续平行工作(主要是自动布局);同样不愿意用一个Storyboard和两个目标从零开始重新创建整个项目。 (这应该肯定有效。)P.S .:我很感激你在选择之前真的尝试了它。当然,上面Paulw11没有阴影。但是我们都经历了错误的“建议”。 –