2016-11-22 3 views
0

私はUILabel私のviewControllerの変数を持っています:class AwardsViewController: UICollectionViewControllerviewController変数をアダプタから変更しますか?

@IBOutlet var awardsCollectionView: UICollectionView! // The collection view 
private var adapter = AwardsCollectionAdapter()  // The adapter 
awardsCollectionView.dataSource = adapter 
awardsCollectionView.delegate = adapter 

私は、ユーザーがコレクションビューセルの一つをクリックすると、ビューコントローラ内UILabelを変更する、すなわち:のViewControllerのcollectionViewは次のように接続されます必要なすべてのコレクションビュー機能を持つアダプタを持っていますこの機能で:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) 
{ 
    // ...change text of viewController's label 
} 

誰もが、私は、アダプタで、この関数内でビューコントローラ内の変数へのアクセスを取得する方法を知っていますか?ラベルはプログラマチックに追加されているため、ストーリーボードには表示されず、viewControllerクラスにスコープされています。

class AwardsViewController: UICollectionViewController { 
    let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21)) 

答えて

0

私は自分でそれを行う方法を見つけたと思います。私はアダプタのlabel : UILabel!変数を作成し、コントローラのviewDidLoadadapter.labelself.labelに設定しました。それ以降、アダプタの機能内でそのラベルを操作できます。

それは私が思うよりもはるかに困難でしたが、今はどのように完了したのか分かりました。

0

これを行う方法はたくさんあります。個人的には、あなたが選んだものが最悪です。アダプターをビュー・コントローラーと結合しています。次回以降は、別々にはライブができず、コードを再利用することはできません。 文字列のみを渡すことでデータ通信を抽象化すると、その行を表すモデル全体がより再利用可能になります。

NotificationCenterDelegate patternclosuresなどを使用するかどうかを決めることができます。

+0

私に知らせてくれてありがとう、私はこれをかなり新しくしているので、これを学ぶことは本当に役に立ちます。 – MarksCode

関連する問題