我有一个创建的文本视图
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)
}
当用户将我的应用程序推送到后台时(使用主页按钮切换到另一个应用程序),然后稍后返回我的应用程序,我想更新文本视图中的文本。我正在尝试这个:
func updateText() {
txtView.text = "bye"
}
在我的app delagate文件中我有
func applicationDidBecomeActive(application: UIApplication) {
viewController().refreshAppInForeground()
}
当用户返回我的应用程序时,它不会更新txtView
答案 0 :(得分:1)
您可以使用空框架将标签创建为视图控制器的属性。
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是视图控制器上的属性,因此您现在可以访问它。
答案 1 :(得分:0)
我找到了解决方案。
我的问题似乎是applicationDidBecomeActive在它引用我的观点之前很快就解雇了。
然而,使用通知中心监听器解决了它。
这是我发现有用的教程: https://www.codefellows.org/blog/how-to-implement-an-nsnotification-observer-in-swift