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

时间:2015-10-04 17:13:50

标签: swift 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)
}

当用户将我的应用程序推送到后台时(使用主页按钮切换到另一个应用程序),然后稍后返回我的应用程序,我想更新文本视图中的文本。我正在尝试这个:

func updateText() {
  txtView.text = "bye"
}

在我的app delagate文件中我有

func applicationDidBecomeActive(application: UIApplication) {
  viewController().refreshAppInForeground()
}

当用户返回我的应用程序时,它不会更新txtView

2 个答案:

答案 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