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

时间:2017-10-13 07:50:32

标签: swift methods storyboard segue uicontainerview

我有一个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工作。

1 个答案:

答案 0 :(得分:0)

在PlayerInfoHeader中设置弱属性(以避免保留周期)以保持对父级的引用

  

weak var parentVC:UpperLower?

在prepareForSegue中设置属性

  

PlayerInfoHeaderView.parentVC = self