我创建了一个文本视图
class viewController: UIViewController {
var txtView = UITextView(frame: CGRectZero)
override func viewWillAppear(animated: Bool) {
txtView = UITextView(frame: CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height))
txtView.text = "hi"
self.view.addSubview(txtView)
}
当用户将我的应用程序推到后台时(使用home键切换到另一个应用程序),然后返回到我的应用程序,我想更新文本视图中的文本。我正在尝试这个:
func updateText() {
txtView.text = "bye"
}
在我的app委托文件中我有
func applicationDidBecomeActive(application: UIApplication) {
viewController().refreshAppInForeground()
}
当用户返回到我的应用程序它不会更新txtView
你可以用一个空框架创建你的标签作为视图控制器的属性。
var txtView = UITextView(frame: CGRectZero)
你可以在viewWillAppear
函数中给它一个帧,就像你已经做的那样:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated) // Don't forget the call to super
// Set the frame for your textview
txtView = UITextView(frame: CGRectMake(0, 0, view.frame.size.width, self.view.frame.size.height))
txtView.text = "hi"
view.addSubview(txtView)
}
由于textview是视图控制器上的一个属性,你现在可以访问它了
我想到了一个解决办法。
我的问题似乎是applicationDidBecomeActive在它可以引用我的视图之前就被触发了。
然而,使用通知中心侦听器解决了这个问题。
下面是一个我觉得很有帮助的教程:https://www.codefellows.org/blog/how-to-implement-an-nsnotification-observer-in-swift