2017-03-19 2 views
2

makeItem(withIdentifier identifier: String, for indexPath: IndexPath)을 호출 할 때 내 NSCollectionView이 충돌합니다. numberOfItemsInSection은 올바른 값을 반환합니다. itemForRepresentedObject 대신 makeItem...viewDidLoad 대신에 호출하면 indexPath가 범위를 벗어 났음을 나타내는 오류가 표시됩니다. 어떻게 이럴 수있어? 이 같은항목을 만들 때 NSCollectionView가 충돌 함

컬렉션보기로드 :

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 
} 

(목록 모음은 영역 클래스입니다) viewWillAppear() 동안

태그 모음이 ReSwift 상태에서 채워집니다

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

    super.viewWillAppear() 
} 

답변

3

그것을 해결했습니다.

항목에 .xib을 만들었을 때 NSCollectionViewItem 개체를 추가했지만보기를 내 사용자 지정보기에 연결하지 않았습니다.

enter image description here

이에 의해 잡힐 사람을 위해, 요약하자면, 작성하는 단계는 NSCollectionViewItem은 다음과 같습니다

  1. 가에 NSCollectionViewItem 객체를 추가 펜촉을 만들고보기
  2. 을 구성 당신의 펜촉
  3. 보기 (및 다른보기)를 객체에 연결하십시오.
  4. collec에 펜촉을 등록하십시오 보기 컨트롤러의 viewingView