我有一个View,我在其中嵌入了一个ContainerView。我第一次在我的ContainerView上填写标签
class UpperLower { ...
override func prepare(for segue: UIStoryboardSegue, sender: Any!) {
let PlayerInfoHeaderView = segue.destination as? PlayerInfoHeader
PlayerInfoHeaderView?.player1 = player1
PlayerInfoHeaderView?.player2 = player2
PlayerInfoHeaderView?.game = game
}
}
Segue触发viewDidLoad(),我调用方法updateUI()
class PlayerInfoHeader: UIViewController { ...
override func viewDidLoad() {
super.viewDidLoad()
updateUI(game: game)
}
func updateUI(game: Player.Game) {
player1NameLabel.text = player1.name
player2NameLabel.text = player2.name
switch game {
case .UpperLower:
player1PointsLabel.text = "Points: \(player1.points.UpperLower)"
player1WinrateLabel.text = "Winrate: \(player1.winrates.UpperLower) %"
player1RoundsWonLabel.text = "Rounds Won: \(player1.roundswon.UpperLower)"
player2PointsLabel.text = "Points: \(player2.points.UpperLower)"
player2WinrateLabel.text = "Winrate: \(player2.winrates.UpperLower)"
player2RoundsWonLabel.text = "Rounds Won: \(player2.roundswon.UpperLower)"
}
现在,在每轮比赛结束后,我也想更新我的UI。我尝试了很多东西,但我不知道如何从我的UpperLower手动触发UpdateUI()。我知道我需要对嵌入式容器视图的引用。但是我怎样才能在segue上下文之外得到这个引用呢?有没有简单的方法来解决我的问题?
PS:我在故事板上完成了所有的UI工作。
答案 0 :(得分:0)
在PlayerInfoHeader中设置弱属性(以避免保留周期)以保持对父级的引用
weak var parentVC:UpperLower?
在prepareForSegue中设置属性
PlayerInfoHeaderView.parentVC = self