2017-03-19 2 views
2

Mon NSCollectionView se bloque lors de l'appel makeItem(withIdentifier identifier: String, for indexPath: IndexPath). numberOfItemsInSection renvoie la valeur correcte. Si j'appelle makeItem... dans viewDidLoad plutôt que dans itemForRepresentedObject je vois une erreur indiquant que l'indexPath est hors des limites. Comment se peut-il?NSCollectionView se bloque lors de la création d'éléments

La vue collection des charges comme ceci:

class TagCollectionViewController: NSViewController, NSCollectionViewDataSource { 

    fileprivate static let itemIdentifier = "TagItem" 

    @IBOutlet var collectionView: NSCollectionView! 
    fileprivate var tags = List<Tag>.init() 

    override func viewDidLoad() { 
    super.viewDidLoad() 

    let nib = NSNib(nibNamed: "TagCollectionViewItem", bundle: nil) 
    collectionView.register(nib, forItemWithIdentifier: TagCollectionViewController.itemIdentifier) 

    collectionView.dataSource = self 
} 

(la liste de collection est une classe de Realm)

Pendant viewWillAppear() la collection balises est peuplée d'un état ReSwift:

override func viewWillAppear() { 
    for image in mainStore.state.selectedImages { 
    for tag in image.tags { 
     tags.append(tag) 
    } 
    } 

    super.viewWillAppear() 
} 

Répondre

3

Résolu.

Lorsque j'ai créé le fichier .xib pour l'article, j'ai ajouté un objet NSCollectionViewItem mais n'a pas câblé la vue dans ma vue personnalisée.

enter image description here

Pour récapituler, pour tous ceux qui se coince par cela, les étapes de la création d'un NSCollectionViewItem sont:

  1. Créez la plume et configurer votre point de vue
  2. Ajouter un objet NSCollectionViewItem à votre plume
  3. Connectez votre vue (et toutes les autres vues) à l'objet
  4. Enregistrez la plume avec le collec tionView in your view contrôleur