2016-12-10 9 views
0

私はXcodeでレイアウトしたdequed再利用可能なタイルを使って機能するUICollectionViewを持っています。私は、私のカスタムUICollectionViewCellサブクラスのインスタンスを効果的に複製するドラッグドロップをしようとしていますが、元のUICollectionView以外のビューで使用することはできません。このための一般的な戦略はありますか?UICollectionView APIの外部で「塗装された」UICollectionViewCellサブクラスをインスタンス化する方法はありますか?

私はinit(frame:CGRect)を追加しました。そのため、UICollectionViewユースケースの外で作成することができましたが、コーダーからの呪文を得られません。 UICollectionView.deque APIではなく、そのreuseIdentiferに固有のコーダーを取得し、それを使ってコーダーを作成するために使用できるAPIはありますか?

(私はSwift3/iOS10をやってる)

答えて

0

あなたがUICollectionViewを悩ませずにインスタンス化さUICollectionViewCellを作成することができるようにしたい場合は、XIBではなく、ストーリーボードであなたのUICollectionViewCellを定義します。 Xcodeでこれを行う行うに

  • ファイル - >新規 - >ファイル - >ユーザインタフェース - >表示
  • あなたはストーリーボードで行うだけのようNameOfYourCellClassにそのクラスを設定します。

あなたViewControllerでそれを使用するには、XIBを登録する必要があります。

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 
} 
関連する問題