Swift 如何在每次加载UIViewController时运行函数

Swift 如何在每次加载UIViewController时运行函数,swift,viewdidload,Swift,Viewdidload,我有这个功能: func setMoneyValues() { balanceLabel.text = User.current.roundBalance() oweLabel.text = User.current.roundOwed() userLabel.text = User.current.roundUser() } 我在viewdidload中执行的。但是,它只被调用一次,如果我转到另一个选项卡(由选项卡栏控制器管理),更改值

我有这个功能:

func setMoneyValues() {
        balanceLabel.text = User.current.roundBalance()
        oweLabel.text = User.current.roundOwed()
        userLabel.text = User.current.roundUser()
    }

我在viewdidload中执行的。但是,它只被调用一次,如果我转到另一个选项卡(由选项卡栏控制器管理),更改值,然后返回到此页面,则不会更新值,因为不会再次调用该函数。我能做些什么使它在每次重新打开标签时都被调用?

也许你想让它出现在
视图中,但请注意,当一个对话框在控制器上方消失时,以及当用户背景和应用程序中返回时,都会调用它,但考虑到你发布的代码的性质,那可能是你想要的

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    setMoneyValues()
}

另外,如果您希望在视图出现之前更新它,您可以更改为
viewwillbeen
,否则它将具有相同的签名。

您应该通过将其移动到viewdide()中来获得更好的结果

viewDidLoad()函数仅在视图加载到内存中时调用,在选项卡栏中,该操作只应发生一次,IIRC


每次视图出现在屏幕上时,都会调用ViewDidAspect()函数。

一种更好的方法是在数据更改时重新加载数据,而不是每次视图出现时重新加载数据

因此,view Dod load中的初始设置是可以的,但您也可以在用户对象中设置一个NSNotification,在用户数据更改时触发。在设置初始值后,您可以在
viewDidLoad
方法中订阅此通知,在通知处理程序中,您可以将这些值设置为新状态

比在
viewDid/willappeard
中重新加载要干净一点,它可以被多次调用,只会导致无意义的轮询和更新未更改的信息