将IBOutlet连接到通用Storyboard Xcode6

时间:2014-08-21 11:03:53

标签: ios swift xcode6 ios-universal-app xcode6-beta6

使用Xcode 6 beta 6开发通用应用程序的iOS应用程序。我正面临着连接IBOutlets和使用通用故事板的问题。 如果我正在使用" w任何任何"配置然后我无法为iPhone和iPad设计两个不同的界面。如果我设计使用不同的配置,即" w compact h h regular"对于iPhone和" w常规常规"对于iPad,我可以设计两个不同的接口,但无法将相同的IBoutlet连接到它们。如果我将它连接到iPhone配置,即" w compact h regular"首先它运行顺畅,但一旦我连接到iPad配置,即常规常规"然后与iPhone的连接自动断开连接。 请帮助我,我无法得到一个解决方案,我已经在谷歌搜索了很多,但无法找到任何东西,因为没有太多可用的资源。

修改 如果我将IBOutlets连接到" w任何任何"配置,然后切换到iPhone配置并添加约束,故事板显示一些错误,如冲突的约束。请看图像

error when added constraints in "w compact h regular"

这是针对iPhone配置后连接插座的" w any h all"并在iPhone配置中添加约束

2 个答案:

答案 0 :(得分:0)

我不确定这是不是很糟糕的做法,但是当我将我的应用程序设为通用时,我复制了我的viewControllers并将它们与相应的故事板相关联。我有一个名为iPadStoryboard.storyboard的故事板与iPadViewController.swift相关联。另一个故事板名为iPhoneStoryboard.storyboard,与iPhoneViewController.swift相关联。希望这可以帮助!对不起,如果效率低下的话!

答案 1 :(得分:0)

这个问题已经有一年了,但万一有人仍然在努力解决这个问题,这就是解决方案。

如果您计划在多个布局中连接相同的IBOutlet,则需要将其放置在Any-Any布局中,并首先将其连接到代码中的IBOutlet。还要避免编译器警告为它设置一些约束,即使您永远不会使用该特定布局。

例如,假设您的通用应用程序设置为仅在iPhone或iPad上以纵向运行,并且可以说要添加textField和按钮。首先选择Any-Any并将textField置于屏幕的中心并为其设置约束,然后将按钮放在其下方并将其约束在那里,然后将它们中的每一个连接到您的代码。

接下来切换到用于纵向iPhone的Compact-Regular,然后将textField向下拖动到屏幕的左下角并设置约束以将其保留在那里,并将按钮放在它旁边并约束它。您不需要将这些重新连接到代码。它们保持连接,因为您在Any-Any Layout上执行了此操作。现在切换到Regular-Regular布局并重复你刚刚做的同样的事情,但这次把按钮和textField放在屏幕的右上方并将它们限制在那里。

就是这样。它们仍然连接到代码,但约束将基于设备正确应用。如果您在人像iPhone上运行应用程序,按钮和textField将显示在屏幕的左下方,在iPad上将显示在右上角。如果将iPhone切换为横向,它们将被限制在中心,因为这是将它们放在Any-Any布局上的位置。所有这些都连接到您在Any-Any布局上连接它们的相同IBOutlet。

但要预先警告,如果您对Any-Any布局进行更改,则会影响其他布局。所以首先布局Any-Any并确保它是正确的,然后切换到其他的并根据需要进行更改。

希望这有帮助!