如何手动触发我的容器视图上的方法?

如何手动触发我的容器视图上的方法?

问题描述:

我确实有一个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 =自

+0

嗨,我现在测试您的解决方案,到目前为止好,但我还是不知道该怎么称呼我的updateUI()方法正确。它似乎仍然面临同样的问题,我没有一个引用我的PlayerInfoHeader以外的prepare()函数? – XaNNy0

+0

UpperLower应该是一个UIViewController。看来你需要以相反的方式去做,就像父母给孩子打电话一样?如果是这样,它非常简单。 –

+0

我也是这样做了,现在一切似乎都奏效了。非常感谢您的负担。 – XaNNy0