【问题标题】:Swift - Update View After UnwindSwift - 展开后更新视图
【发布时间】:2017-04-27 20:44:46
【问题描述】:

我正在尝试更新我的第一个视图控制器上的标签,然后从第二个展开。 Dfri 在这里Passing data with unwind segue 发布了一个有用的答案,但我仍然无法使我的代码工作。

我知道在展开后不会再次调用 viewDidLoad,但是我不明白在发回数据后视图是如何更新的。

在 Dfri 的回答中,他的第一个视图控制器包含此代码,但我不知道“newValue”是什么。除非我忽略了某些东西,否则他似乎没有在其他任何地方定义它。

 var dataRecieved: String? {
    willSet {
        labelOne.text = newValue
    }
}

@IBOutlet weak var labelOne: UILabel!


override func viewDidLoad() {
    super.viewDidLoad()

    labelOne.text = "Default passed data"
}

 @IBAction func unwindToThisView(sender: UIStoryboardSegue) {
    if let sourceViewController = sender.sourceViewController as? ViewControllerB {
        dataRecieved = sourceViewController.dataPassed
    }
}

我假设他使用带有“willSet”关键字的 dataRecieved 变量作为新数据到达后更新视图的一种方式。但同样,我不知道“newValue”是什么或它是如何工作的。

编辑

这是我的代码,但是当我从展开返回时,我意外地在“playerName.text = newValue”上发现 nil。插座连接良好,并使用初始的“未选择玩家”默认值。

class NBARotoHome: UIViewController{

@IBOutlet weak var playerName: UILabel!

var dataRecieved: String? {
    willSet {
        playerName.text = newValue
    }
}

override func viewDidLoad() {
    super.viewDidLoad()

    playerName.text = "No Player Selected"

}

@IBAction func prepareForUnwind(segue: UIStoryboardSegue) {

    if let sourceViewController = segue.source as? BuyStats {
        dataRecieved = sourceViewController.selectedPlayer.Name
    }

}

}

【问题讨论】:

  • newValue 在 Swift 的计算属性中定义
  • 我在 playerName.text = newValue 上意外发现 nil。我将编辑我的问题以显示我自己的代码。
  • 更改为didSetnewValue dataRecieved

标签: ios swift segue uistoryboardsegue unwind-segue


【解决方案1】:

尝试覆盖 func viewDidAppear(){

}

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
  • 2017-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-22
相关资源
最近更新 更多