Swift, представление коллекции: заголовки разделов не показаны - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь запрограммировать NSCollectionView в Swift, MacOS.Работает хорошо, за одним исключением.Заголовки разделов не отображаются.Где они должны появиться, это просто пустое место.Последняя функция collectionView в приведенном ниже коде, которая должна вызываться каждый раз при отрисовке заголовка, никогда не вызывается.Вместо этого он выдает это предупреждение:

Метод экземпляра 'collectionView (: viewForSupplementaryElementOfKind: at :)' почти соответствует необязательному требованию 'collectionView (: viewForSupplementaryElementOfKind: at :)' протокола'NSCollectionViewDataSource'

Кто-нибудь знает, что я сделал не так?Как я могу заставить программу вызывать функцию view-collection-collectionView?

Best!

extension FacetWindow: NSCollectionViewDataSource{
        func numberOfSections(in collectionView: NSCollectionView) -> Int {
        return facets.count // how many sections?
    }

    func collectionView(_ collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {

        return facets.facets[section].facetContent.count //how many items in section?
    }

    func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
        let item = collectionView.makeItem(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "FacetsWindowCollectionViewItem"), for: indexPath)
        guard let collectionViewItem = item as? FacetsWindowCollectionViewItem else {return item}
        collectionViewItem.textField?.stringValue = facets[indexPath[0], indexPath[1]]
        print("facet" , facets[indexPath[0], indexPath[1]])
        return item
    }

   func collectionView(_ collectionView: NSCollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> NSView {
        //this function never gets called!!!
        let view = collectionView.makeSupplementaryView(ofKind: NSCollectionView.SupplementaryElementKind.sectionHeader, withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "FacetsWindowCollectionViewHeader"), for: indexPath) as! FacetsWindowCollectionViewHeader
        view.FacetsWindowCollectionViewHeaderLabel.stringValue = facets[indexPath[0]]
        return view
        }

}

1 Ответ

0 голосов
/ 16 декабря 2018

Спасибо, ребята, я нашел ответ!

Этот код:

collectionView (_ collectionView: NSCollectionView, viewForSupplementaryElementOfKind вид: String, at indexPath: IndexPath) -> NSView

никогда не вызывали, потому что система больше не знала этого.Это был старый код, который я скопировал из примера кода.Повторите это вручную, и XCode сделал правильные предложения.

...