私は、ユーザーがcollectionviewのプレーヤーのリストの中のプレーヤーに入札できる小さなiOSゲームを構築しています。ビューコントローラから対応するUICollectionViewセルにデータを渡す方法は?
下の画像の3番目のviewcontrollerでは、対応するプレーヤーのcollectionviewcellに入札を表示させるにはどうすればよいですか?
第一ビューコントローラ
選手の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にアクセスできるようにしました。
Playerプロファイルオブジェクトを第3のVCの 'UICollectionViewCell'に保持していますか? – UditS
データソースを更新する必要があります。 1つのオプションは、プレーヤーモデルオブジェクトに 'betValue'プロパティを追加することです。そのプロパティが!= 0の場合、コレクションセルチェックを返すときに、2番目のVCと3番目のVCでその値を更新し、ラベルを表示します。 – Lucho
データを管理するオブジェクトを作成します。プレーヤー、入札など、必要なものを追跡します。次に、コントローラー間の依存関係を作成するのではなく、データ・マネージャーと通信して、表示させるものを取得/更新します。 –