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

Неизвестные отношения segue: прототип с NSCollectionView

Просто добавив NSCollectionView в Storyboard, код не будет компилироваться с ошибкой: Неизвестное отношение segue: Prototype.

Является ли это известной ошибкой Swift/XCode6-beta4 или мне что-то не хватает?

4b9b3361

Ответ 1

Это известная ошибка и упоминается (с обходным решением) в примечаниях к выпуску Xcode 6 beta-5:

Раскадровка может не скомпилироваться после добавления NSCollectionView в Это. (17009377)!

Обходной путь: выберите xib, который включает NSCollectionView и загрузите его в ракурс на основе View.!

Ответ 2

Обновление для Xcode 7 beta 6 (см. примечания к выпуску):

Интерфейс Builder поддерживает новый API NSCollectionView в 10.11, используя dataSource и макеты, например, на iOS. (18997303)

  • Временное решение. Невозможно настроить элементы прототипа в Interface Builder. Использовать - [NSCollectionView registerClass: forItemWithIdentifier:] или - [NSCollectionView registerNib: forItemWithIdentifier:] в коде.

Кто-нибудь пытался работать с ним раньше? Должен ли я просто добавить пустой коллекционный вид в свою панель рассказов, а затем создать файл nib только для коллекции, и, наконец, связать его с помощью кода?


Обновление для Xcode 7.1 beta 3

Я загрузил и протестировал новую бета-версию сегодня, и проблема все еще там. Однако они странно удалили обходные заметки из примечания к выпуску, как если бы они исправили его...

Ответ 3

На самом деле нет необходимости создавать дополнительный файл XIB, когда вы уже используете раскадровки.

  • Удалите соединение между NSCollectionView и NSCollectionViewItem

  • Дайте элементу представления идентификатор

  • Установите прототип элемента программно в окружении NSViewController:

@IBOutlet weak var collectionView: NSCollectionView!

override func viewDidLoad() {
    self.collectionView.itemPrototype = self.storyboard?.instantiateControllerWithIdentifier("collectionViewItem")
        as NSCollectionViewItem
}

Это сохраняет все представления пользовательского интерфейса в одном месте и, таким образом, обеспечивает более приятное обходное решение, чем наличие чужой XIB файла.

Ответ 4

Если вы используете SDK OSX 10.11, следующая информация из заметки о выпуске Apple для него запрещает заполнять свойство itemPrototype в (что, конечно, предполагает, что ваша минимальная цель развертывания - 10.11):

Чтобы использовать новую модель API NSCollectionViews, вы указываете макет, устанавливая свойство "collectionViewLayout" NSCollectionViews и предоставляя "источник данных" или связывая содержимое "CollectionViews" с NSArray или NSArrayController (см. "Связывание содержимого с NSCollectionView", ниже). Вы также должны отключить и отбросить NSCollectionViews "itemPrototype", который является остатком модели API 10.10 и более ранних версий.