Подтвердить что ты не робот

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

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

Seriously?

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

enter image description here

4b9b3361

Ответ 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, и я выбрал Да.

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