Interface Builder故事板编译失败?

时间:2013-12-04 21:50:38

标签: ios xcode uistoryboard

Xcode的新功能 - 有没有办法在Xcode遇到编译时错误时从Xcode中获取更多细节?我尝试构建应用程序时获得的唯一消息是" Interface Builder Storyboard编译失败"。我不知道它有什么问题。

Seriously?

" Build"日志导航器中的项目。

enter image description here

4 个答案:

答案 0 :(得分:17)

感谢wufoo我想出了我的意思。

我的桌面视图有五个静态单元格。单元格有各种各样的UIImageViews,UITextFields等。我在主UITableViewController .h文件中创建了IBOutlets,并直接连接到故事板中的静态单元格UITextfields。你不能这样做。

一旦我删除了这些连接,它就编译好了。

看来你必须将静态创建的单元格中的UIWidgets(文本字段,标签,图像视图等)直接连接到该单元格.h文件中的IBOutlets(不像我所做的那样,连接到tableview .h文件中的IBOutlets)。

----更新----
好的,所以我的帖子不完全准确。看来你可以将IBOutlets从UITableViewCell的子类直接连接到主UITableViewController .h文件。您只需确保将表视图内容字段设置为"静态单元格"。我错过了那一步。

这是一张图片来说明: Screenshot 选择您的故事板,在左侧的详细信息窗格中,确保您的"表视图"被选中。在右侧窗格中,选择属性检查器面板,然后从" Dynamic Prototypes"更改到#34;静态细胞"。通过将组件拖放到情节提要板上来设置静态单元格,然后如果要从组件直接链接到主ViewController .h文件中的IBOutlet属性,则可以。

我发现我遇到的问题是我在storyboard中设置静态单元格,然后尝试在委托方法cellForRowAtIndexPath:中再次动态重新创建它们。这不是很好。如果使用静态单元格,则无需使用任何单元设置委托方法。

这里有一些优秀的阅读也帮助了我: Apple TableView Programming Guide

答案 1 :(得分:1)

对于它的价值,问题似乎与我的.m文件中声明的两个IBOutlet对象有关。一个引用UISlider,另一个引用UILabel。我删除了引用,然后将它们声明为类变量。在viewDidLoad我使用[self.view viewWithTag:TAG_FROM_STORYBOARD_WIDGET]将它们连接起来。看起来像提到的解决方案一样 f.perdition在上面的链接。

答案 2 :(得分:0)

对我来说,项目中有两个相同的故事板导致此错误频繁出现。

我创建了一个故事板X,在其中添加了一个视图控制器Y.然后我重构了一个视图控制器Z到故事板X.Xcode询问我是否要替换现有的故事板X并选择是。

仅在几个小时之后,我注意到文件/项目导航器(左窗格)中的故事板有两个引用。删除了其中一个参考资料,之后问题就没有显示出来。

答案 3 :(得分:0)

在用例中,我添加了一个新目标,该目标运行使用xcodebuild的构建脚本。我收到了同样的失败消息,但是原因是 Build Settings 中默认情况下 YES 支持Mac Catalyst。 (我的主要目标不支持Mac Catalyst。)在 Builds Settings 中将其更改为 NO 可以解决此问题。