如何使用 Swift 从 ViewController 获取 TextView 的文本值?
Posted
技术标签:
【中文标题】如何使用 Swift 从 ViewController 获取 TextView 的文本值?【英文标题】:How can I get the text value of TextView from a ViewController using Swift? 【发布时间】:2016-03-16 16:43:59 【问题描述】:class AlertViewController: UITableViewController
@IBOutlet weak var alertText: UITextView!
override func viewDidLoad()
super.viewDidLoad()
alertText.text = "alert"
所以我想在AppDelegate.swift
中获取文本值,我有这个:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
let alertText = AlertViewController().alertText
print(alertText.text)
return true
我收到了这个错误
致命错误:在展开可选值时意外发现 nil (lldb)
【问题讨论】:
调用 AlertViewController() 不会调用 viewDidLoad。所以是的,alerttext 为零,然后你崩溃了。 viewDidLoad 仅在第一次访问视图时(由您或由 UIKit)调用 谢谢,我了解了更多关于viewDialod函数的知识 【参考方案1】:@IBOutlet weak var alertText: UITextView!
看看您是如何将其实例化为“弱”变量的。这意味着除非需要,否则它不会被实例化。正如 Ro22e0 所说,我不确定您为什么在 appDelegate 中调用它,但请确保类对象已实例化。 textField.text 值也是可选的,因此在尝试像这样打印之前检查 nil
if let alertText = AlertViewController.text
print(alertText)
【讨论】:
“弱”不是这个意思 "因为弱引用不会对其引用的实例保持强控制,所以当弱引用仍在引用它时,该实例可能会被释放。因此,ARC 会自动设置当它引用的实例被释放时,对 nil 的弱引用。” -developer.apple.com/library/ios/documentation/Swift/Conceptual/…【参考方案2】:override func viewDidAppear(animated: Bool)
super.viewDidAppear(true)
print("text:", alertText.text)
AppDelegate 在 ViewController 之前启动
【讨论】:
在 AppDelegate 中,我调用 AlertViewController()。 viewDidAppear(true),我仍然遇到致命错误:在展开可选值 (lldb) 时意外发现 nil viewDidAppear 在 ViewController 而不是 AppDelegate 中被调用以上是关于如何使用 Swift 从 ViewController 获取 TextView 的文本值?的主要内容,如果未能解决你的问题,请参考以下文章
uipageviewcontroller 中的 Swift uipageviewcontroller