我希望能够通过调用 View 中的方法来更新我的 uitextview。使用此代码我收到运行时错误:
Unexpectedly found nil while unwrapping an Optional value
如果我注释掉它运行的 vw.updateTerm(...) 行。最终,我想使用从 BLE 和/或 http 请求更新的数据来更新 uitextview。任何帮助或指导将不胜感激。
我的 Playground Swift 3 代码如下所示:
import UIKit
import PlaygroundSupport
public class TextViewController : UIViewController {
public var textView : UITextView!
override public func loadView() {
textView = UITextView()
textView.text = "Hello World!\nHello Playground!"
self.view = textView
}
func updateTerm(textToUpdate: String) {
self.textView.text.append(textToUpdate)
}
}
let vw = TextViewController()
vw.updateTerm(textToUpdate: "here you go")
PlaygroundPage.current.liveView = vw
最佳答案
问题是 loadView
当您尝试updateTerm
时,此时仍未被调用,这意味着textView
是 nil
在 loadView
对于vw
实例。
至textView
被声明为强制解包属性,任何在 nil
期间使用它的尝试(如您的情况)将导致运行时错误。
您应该将其设为常规可选:
public var textView : UITextView?
override public func loadView() {
textView = UITextView()
textView?.text = "Hello World!\nHello Playground!"
self.view = textView
}
func updateTerm(textToUpdate: String) {
self.textView?.text.append(textToUpdate)
}
或者,例如,惰性属性(如果适合您的情况):
lazy public var textView = UITextView()
override public func loadView() {
textView.text = "Hello World!\nHello Playground!"
self.view = textView
}
func updateTerm(textToUpdate: String) {
self.textView.text.append(textToUpdate)
}
更多信息可以找到here .
关于ios - 如何从外部源更新 uitextview。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41474898/