在没有创建和修改它的函数中访问UITextView



我创建了一个文本视图

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

最新更新