【问题标题】:How to trigger a method on my container view manually?如何手动触发我的容器视图上的方法?
【发布时间】:2017-10-13 07:50:32
【问题描述】:

我确实有一个视图,我在其中嵌入了一个 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 工作。

【问题讨论】:

    标签: swift methods storyboard segue uicontainerview


    【解决方案1】:

    在 PlayerInfoHeader 中设置一个弱属性(以避免保留循环)以保留对父级的引用

    weak var parentVC: UpperLower?

    在prepareForSegue中设置属性

    PlayerInfoHeaderView.parentVC = self

    【讨论】:

    • 嗨,我现在测试了你的解决方案,到目前为止一切都很好,但我仍然不知道如何正确调用我的 updateUI() 方法。似乎我仍然面临同样的问题,即我在 prepare() 函数之外没有对我的 PlayerInfoHeader 的引用?
    • UpperLower 应该是 UIViewController。看来您需要反过来做,就像父母打电话给孩子一样?如果是这样,那就很简单了。
    • 是的,我反其道而行之,现在一切正常。非常感谢您的付出。
    • 没问题的朋友
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多