如何手动触发我的容器视图上的方法?
问题描述:
我确实有一个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)"
}
现在,经过每一轮出场,我也想更新我的用户界面。我尝试了很多东西,但我不知道如何手动将UpdateUI()从我的UpperLower中触发。我知道我需要对我的嵌入式容器视图的引用。但是我怎么能在segue上下文之外获得这个引用呢?有没有简单的方法来解决我的问题? PS:我在故事板上做了所有的UI工作。
答
设置弱属性(避免保留周期)的PlayerInfoHeader的参考保持到父
弱VAR parentVC:UpperLower?
将财产prepareForSegue
PlayerInfoHeaderView.parentVC =自
嗨,我现在测试您的解决方案,到目前为止好,但我还是不知道该怎么称呼我的updateUI()方法正确。它似乎仍然面临同样的问题,我没有一个引用我的PlayerInfoHeader以外的prepare()函数? – XaNNy0
UpperLower应该是一个UIViewController。看来你需要以相反的方式去做,就像父母给孩子打电话一样?如果是这样,它非常简单。 –
我也是这样做了,现在一切似乎都奏效了。非常感谢您的负担。 – XaNNy0