我正在使用XCode 8.2.1构建一个应用程序,其中一些对象显示在2D板上,当用户点击其中一个对象时,应该显示一些有关它的信息,以样式化的模态信息框的形式。我的设计是将信息编写在单独的视图控制器中,在需要时显示。
我已经为第二个视图控制器设计了一个基本的存根,并在接口构建器中添加了一个标签。然后我将此标签与我的自定义VC类进行了ctrl链接:
class InfoViewController: UIViewController {
@IBOutlet weak var info: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
func displayInfo() {
info.attributedText = NSAttributedString(string: "abc")
}
}
然而,当我测试我的应用并轻敲对象时,在我的自定义 VC 类的 viewDidLoad()
方法中,info
字段仍然是 nil
。我显示 VC 的方式如下:
let infoViewController = InfoViewController()
infoViewController.modalPresentationStyle = .overCurrentContext
self.present(infoViewController, animated: true, completion: nil)
infoViewController.displayInfo()
(注意:最终我只会有一个单一的
InfoViewController
实例,但这仅用于测试。我不认为全局实例会有任何区别?)正如我所说,无论是在
viewDidLoad()
方法内还是在 displayInfo()
方法内,info
都始终为 nil
,因此设置其 attributedString
属性会导致应用程序崩溃。考虑到 present
方法可能会异步调用,我尝试从 viewDidLoad()
中调用 displayInfo()
,但这没有任何区别。有人能告诉我忘记了什么,可以使我的
IBOutlet
正确初始化吗?谢谢!
David
InfoViewController
,而不是创建一个新实例... - Ahmad F