我正在建立一个小型iOS游戏,用户可以在集合视图中对玩家列表中的玩家出价。
在下图中的第三个视图控制器中,如何让出价显示在相应播放器的collectionviewcell中?
第一个视图控制器
带有玩家UI收集视图的vc。用户在这里选择一个玩家。
第二视图控制器
在此目的地vc中,用户为所选播放器设置出价。
包含一个滑块:
override func viewDidLoad() {
super.viewDidLoad()
configureSlider()
}
配置如下:
func configureSlider() {
if let playerProfile = player {
let minPrice = playerProfile.minPrice
bidSliderLabel.value = Float(minPrice)
}
}
准备segue方法将出价值发送给第三个控制器:
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?
现在我想将UILabel添加到包含出价的collectionviewcell:
@IBOutlet weak var bidSetLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
bidSetLabel.text = bidSet
}
但是这个bidSetLabel应该只用于一个collectionview单元格:包含收到出价的玩家的单元格。
我怎样才能做到这一点?
解决方案
正如Philip Mills在评论中所建议的那样,我最终使用的是数据模型而不是segues。我将出价值存储在实例中的第二个VC中,使VC 3可以访问它。
答案 0 :(得分:0)
您需要将Label添加到每个collectionView单元格。最初提供bidSetLabel heightConstraint.constant=0
。
当您想要显示bidSetLabel时,只需传递该特定单元格的索引,并将高度设置为您对该特定单元格的任何喜好。 heightConstraint.constant=50
。{/ p>
或者,如果您使用单元格中显示的数据并将高度设置为Player
,则还可以制作跟踪唯一player_uid
属性的heightConstraint.constant=50
类。