Сбой компиляции компоновщика интерфейса?

Новое для Xcode здесь. Есть ли способ получить больше деталей из Xcode, когда он запускается во временную ошибку компиляции? Единственное сообщение, которое я получаю, когда пытаюсь создать мое приложение, - "Компиляция компоновщика интерфейса Builder". Я не знаю, с каким файлом у него возникла проблема.

Seriously?

Ничего дополнительного не появляется в элементе "Build" в навигаторе журнала.

enter image description here

Ответ 1

Благодаря wufoo я понял, что у меня.

У меня есть табличное представление, содержащее пять статических ячеек. Ячейки имеют набор UIImageViews, UITextFields и т.д. Я создал IBOutlets в основном файле UITableViewController.h и напрямую подключался к ячейкам UIText statics в раскадровке. Вы не можете этого сделать.

Как только я удалил эти подключения, он скомпилировался для меня.

Кажется, вам нужно подключить UIWidgets (текстовые поля, метки, изображения и т.д.) в статически созданной ячейке непосредственно к IBOutlets в этом файле .hh(как это было в случае с IBOutlets в файле tableview.h).

---- UPDATE ----
Хорошо, поэтому мой первоначальный пост был не совсем точным. Похоже, вы МОЖЕТЕ подключить IBOutlets из подклассов UITableViewCell непосредственно к основному файлу UITableViewController.h. Вам просто нужно убедиться, что вы установите для поля" Просмотр таблицы "значение" Статические ячейки". Я пропустил этот шаг.

Вот изображение, чтобы проиллюстрировать: Screenshot Выберите свою раскадровку, в области подробностей слева убедитесь, что выбран "Вид таблицы". На панели справа выберите панель инспектора атрибутов и измените ее с "Динамические прототипы" на "Статические ячейки". Создайте свои статические ячейки, перетащив ваши компоненты на раскадровку, а затем, если вы хотите напрямую связать свои компоненты с объектами IBOutlet в основном файле ViewController.h.

Я обнаружил, что проблема заключалась в том, что я настраивал статические ячейки в раскадровке, а затем пытался динамически воссоздать их в методе делегата cellForRowAtIndexPath:. Это не работает очень хорошо. Если вы используете статические ячейки, вам не нужно использовать какие-либо методы делегирования ячейки.

Вот несколько отличных чтений, которые также помогли мне: Руководство по программированию Apple TableView

Ответ 2

Для чего это стоит, проблема, похоже, связана с двумя объектами IBOutlet, объявленными в моем файле .m. Один из них ссылался на a UISlider, а другой a UILabel. Я удалил ссылки и вместо этого объявил их как переменные класса. В viewDidLoad я подключил их, используя [self.view viewWithTag:TAG_FROM_STORYBOARD_WIDGET]. Похоже на то же самое решение, о котором упоминалось f.perdition в ссылке выше.

Ответ 3

Для меня это было две идентичные раскадровки в проекте, которые часто вызывают эту ошибку.

Я создал раскадровку X, добавил в нее контроллер Y. Затем я реорганизовал контроллер вида Z в раскадровку X. Xcode спросил, хочу ли я заменить существующую раскадровку X, и я выбрал Да.

Только через несколько часов я заметил, что есть две ссылки для раскадровки в навигаторе файлов/проектов (левая панель). Удален один из ссылочных номеров, и проблема не появилась после этого.