2017-11-03 6 views
0

ViewControllerからCollectionViewItemにデータを渡す正しい方法は何ですか?CollectionViewパスデータ

ViewContoller

func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {   
     let item = CollectionView.makeItem(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "CollectionViewItem"), for: indexPath) as! CollectionViewItem 
     item.themeName = getDirectoryContentByIndex(index: indexPath) 
     return item 
    } 

CollectionViewItem

class CollectionViewItem: NSCollectionViewItem { 


    var themeName: String! 
    @IBOutlet weak var NameOfTheme: NSTextFieldCell! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do view setup here. 
    } 
} 

編集: 私はNameOfThemeののstringValueとしてthemeNameを割り当てます。しかし、値を設定すると、IBOutletはゼロになります。

+0

一つの方法は、プロトコルとデリゲートを使用することです。プロトコルとデリゲートをするために使用されていますあるクラスから別のクラスへ話してください。ここでその使い方を学ぶことができます:https://stackoverflow.com/questions/40501780/examples-of-delegates-in-swift –

答えて

0

私はあなたのセルprivateのフィールドを作成し、我々の場合configure(themeName: String)に(configure(YOUR_PARAMS)を作成することをお勧めいたします。cellForRowにこの関数を呼び出しますのでcell.configure(themeName: "")

+0

いいアイデアですが、私にとってはうまくいきません。 問題は私の '@IBOutlet weak var NameOfTheme:NSTextFieldCell! 'がデータを渡す瞬間に設定されていないので、stringValueを設定できません:( –

+0

@KennyWagenknecht' NSCollectionVi ew'ですが、 'UICollectionView'と非常に似ていると思います。正しい方法で細胞のタイプを登録する必要があります(ここではおそらくxibファイルを使用しています)。ファイルを 'CollectionViewItem'に関連付けていることを確認してください。もう一度Googleがそれらの基本的なことをお手伝いします。その後、上記の方法で使用することができます。 awakeFromNibと他のライフサイクルメソッドでブレークポイントを作って、接続が正しく行われていることを確認する –