2016-05-18 10 views
0

私は、ユーザーがcollectionviewのプレーヤーのリストの中のプレーヤーに入札できる小さなiOSゲームを構築しています。ビューコントローラから対応するUICollectionViewセルにデータを渡す方法は?

下の画像の3番目のviewcontrollerでは、対応するプレーヤーのcollectionviewcellに入札を表示させるにはどうすればよいですか?

The three view controllers

第一ビューコントローラ

選手のUIcollectionviewとVC。ユーザはここで選手を選ぶ。

この宛先VCの2番目のビューコントローラ

は、ユーザが選択したプレーヤーの入札を設定します。

スライダーを含み:

このように構成
override func viewDidLoad() { 
    super.viewDidLoad() 

    configureSlider() 
} 

:Aはセグエ方法準備

func configureSlider() { 
    if let playerProfile = player { 
     let minPrice = playerProfile.minPrice 
     bidSliderLabel.value = Float(minPrice) 
    } 
} 

は、第3のコントローラへの入札値を送信:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 
    if (segue.identifier == "bidResults") { 
     let svc = segue.destinationViewController as! transferResultsViewController; 

     svc.bidSet = "\(bidSliderLabel.value)" 

    } 
} 

3番目のビューコントローラ

VC 2に設定された入札がbidSet変数に格納されます。

var bidSet: String? 

今私は入札を含むcollectionviewcellにUILabelを追加したい:

@IBOutlet weak var bidSetLabel: UILabel! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    bidSetLabel.text = bidSet 
} 

しかし、これbidSetLabelが唯一でなければなりません1つのコレクションビューセルに使用されます:入札を受け取ったプレーヤーを含むもの。

どうすればこの問題を解決できますか?コメントでフィリップ・ミルズによって示唆されるように

ソリューション

、私の代わりにseguesのデータモデルを使用して終了。 2番目のVCの内部に入札値を保存して、VC 3にアクセスできるようにしました。

+0

Playerプロファイルオブジェクトを第3のVCの 'UICollectionViewCell'に保持していますか? – UditS

+0

データソースを更新する必要があります。 1つのオプションは、プレーヤーモデルオブジェクトに 'betValue'プロパティを追加することです。そのプロパティが!= 0の場合、コレクションセルチェックを返すときに、2番目のVCと3番目のVCでその値を更新し、ラベルを表示します。 – Lucho

+0

データを管理するオブジェクトを作成します。プレーヤー、入札など、必要なものを追跡します。次に、コントローラー間の依存関係を作成するのではなく、データ・マネージャーと通信して、表示させるものを取得/更新します。 –

答えて

0

各collectionViewセルにラベルを追加する必要があります。 bidSetLabel heightConstraint.constant=0を入力してください。

bidSetLabelを表示する場合は、その特定のセルのインデックスを渡して、その特定のセルについて好きなものに高さを設定します。 heightConstraint.constant=50

セルに表示されているデータを持ち、高さをheightConstraint.constant=50に設定すると、固有のplayer_uidプロパティをトラッキングするクラスを作成することもできます。

関連する問題