界面生成器故事板编译失败?

13

我是新手,使用Xcode的过程中遇到编译时错误,有没有办法从Xcode中获取更多详细信息?当我尝试构建应用程序时,唯一得到的消息是“Interface Builder Storyboard Compilation Failed”,我不知道哪个文件出了问题。

Seriously?

"Build"菜单下的日志导航器中也没有找到其他有用的信息。

enter image description here

4个回答

17

感谢wufoo,我找到了解决方法。

我有一个表格视图,其中有五个静态单元格。这些单元格包含各种UIImageViews、UITextFields等。我在主UITableViewController .h文件中创建了IBOutlets,并直接连接到故事板中的静态单元格UITextfields。但是这样是行不通的。

一旦我删除了这些连接,它就可以编译通过了。

看起来你必须把UIWidgets(textfields、labels、imageviews等)在静态创建的单元格中直接连接到该单元格的.h文件中的IBOutlets(而不是像我一样连接到tableview .h文件中的IBOutlets)。

---- 更新 ----
好的,我的最初帖子并不完全准确。看起来你可以直接将UITableViewCell的子类中的IBOutlets连接到主UITableViewController .h文件中。你只需要确保将Table View Content字段设置为“Static Cells”。我错过了那一步。

下面的图片说明了这一点: Screenshot 选择你的storyboard,在左侧的详细面板中,确保选择了你的“Table View”。在右侧的属性检查器面板中,从“Dynamic Prototypes”更改为“Static Cells”。通过拖拽方式将组件放入storyboard中,如果你想将组件直接链接到主ViewController .h文件上的IBOutlet属性,那么你可以这样做。

我发现我遇到的问题是我在故事板中设置了静态单元格,然后又在代理方法cellForRowAtIndexPath:中试图重新创建它们。这并不太好用。如果使用静态单元格,则不需要使用任何单元格设置代理方法。

以下是一些对我也很有帮助的优秀读物: Apple TableView编程指南


谢谢,你做得很棒。 - Vignesh
谢谢,好的提示!下次我会尝试直接将IBOutlets连接到tableView,这会让事情变得简单很多! - JOM

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

该出口是指表格或集合视图单元格内的对象吗? - Jon Hess

0
对我来说,项目中有两个相同的故事板导致了这个错误经常弹出。
我创建了一个故事板X,在其中添加了一个视图控制器Y。然后,我将一个视图控制器Z重构为故事板X。Xcode询问是否要替换现有的故事板X,我选择了“是”。
几个小时后,我才注意到文件/项目导航器(左窗格)中有两个故事板引用。删除一个引用后,该问题就没有再出现过。

0

在我的使用情况中,我已添加了一个新的目标,运行使用xcodebuild的构建脚本。我一直收到相同的失败信息,但原因是默认情况下Build Settings支持 Mac Catalyst。 (我的主要目标不支持Mac Catalyst。)将这些更改为NOBuilds Settings中解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接