UITextView设置为空,并且返回UIViewController时不会更新

时间:2019-03-07 08:26:46

标签: ios swift uiviewcontroller uitextview segue

可以说我有两个UIViewController: view1 view2

view1 是TabBarController的第一个(主)viewController,并且有一个按钮 B1 触发切换到 view2 。我在 view1 中有一个UITextView(称为 textView ),它使用以下代码进行了多次更新:

DispatchQueue.main.async {
 self.textView.text = self.textView.text + "some value"
}

当我使用按钮 B1 转到 view2 时, view1 仍在运行后台进程,并且它们尝试更新 textView 使用上面的代码,但是我们在 view2 中,并且无法进行文本更新。结果,当我返回到 view1 时, textview 变为空并且不再更新。关于如何解决这个问题有什么建议吗?

换句话说,某些网络通信经常在 view1 中运行,并且它们会更新 textview 。只要我在 view1 中,它就可以正常工作。但是,当我转到第二个viewController( view2 )并返回到 view1 (使用 Segue )时, textview 变为空,并且即使在以前的后台进程正在运行并且尝试在我处于 view2 时尝试更新文本的情况下,也永远不会更新(因此,我的问题是他们正在尝试更新textView的第一个对象,我猜不是第二个吗?)

1 个答案:

答案 0 :(得分:0)

viewWillAppear view1(VC)方法中添加由上述代码或上述代码本身组成的方法

override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        DispatchQueue.main.async {
            self.textView.text = self.textView.text + "some value"
        }
    }

func someMethod() {
        DispatchQueue.main.async {
            self.textView.text = self.textView.text + "some value"
        }
    }
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        someMethod()
    }