2016-12-10 2 views
0

나는 Xcode에서 레이아웃 한 dequed 재사용 가능한 타일로 작동하는 UICollectionView를 가지고 있습니다. 끌어서 놓기 작업을하려고하는데, 여기서 내 사용자 지정 UICollectionViewCell 하위 클래스의 인스턴스를 효과적으로 복제하지만 원래 UICollectionView 외부의 뷰에 사용합니다. 이것에 대한 일반적인 전략이 있습니까?UICollectionView API 외부에서 "그린"UICollectionViewCell 서브 클래스를 인스턴스화하는 방법은 무엇입니까?

내가 UICollectionView 유스 케이스 외부에서 만들 수 있도록 init(frame:CGRect)을 추가했지만, 코더에서 오는 주문을받지 못했습니다. API가 UICollectionView.deque API가 아닌 reuseIdentifer에 대한 특정 코더를 가져 와서 만들 수있는 API가 있습니까? 당신이 당신의 XIB에서 UICollectionViewCell하지 스토리 보드에서, UICollectionView을 귀찮게하지 않고 복제 된 UICollectionViewCell을 만들 정의 할 수있게하려면

답변

0

(나는 Swift3/iOS10하고 있어요)

.

은 엑스 코드에서이 작업을 수행하려면 다음을 수행

  • 파일 -> 새로 만들기 -> 파일 -> 사용자 인터페이스 ->보기
  • 설정은 스토리 보드에서하는 것처럼 NameOfYourCellClass에 동급.

XIB 등록하려면 ViewController에서 그것을, 당신이 사용하려면

override func viewDidLoad() { 
    super.viewDidLoad() 
    //...   
    self.collectionView.register(UINib(nibName: "nameOfXibFileWithoutExtension", bundle: nil), forCellWithReuseIdentifier: "reuseIdentifier") 
} 

는 이제 collectionView가 예전처럼 작동합니다,하지만 당신은 또한 어디서든 프로젝트에서 셀의 독립적 인 버전을 만들 수 있습니다 :

private func instantiateCellFromNib() -> NameOfYourCellClass { 
    let bundle = Bundle(for: type(of: self)) 
    let nib = UINib(nibName: "nameOfXibFileWithoutExtension", bundle: bundle) 
    let cell = nib.instantiate(withOwner: self, options: nil)[0] as! NameOfYourCellClass 

    return cell 
}