小编Dav*_*vid的帖子

Swift/iOS:加载视图控制器后IBOutlet为零

我正在构建一个应用程序(在XCode 8.2.1中),其中一些对象显示在2D板上,当用户点击其中一个对象时,应该将某些信息显示为样式模态信息框.我的设计是将信息写在一个单独的视图控制器中,我会在需要时显示.

我为第二个视图控制器设计了一个基本存根,并在界面构建器中为它添加了一个标签.然后我将此标签ctrl链接到我的自定义VC类:

class InfoViewController: UIViewController {
    @IBOutlet weak var info: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    func displayInfo() {
        info.attributedText = NSAttributedString(string: "abc")
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我测试我的应用程序并点击该对象时,该info字段nil甚至在viewDidLoad()我的自定义VC类的方法中.我正在显示我的VC的方式如下:

let infoViewController = InfoViewController()
infoViewController.modalPresentationStyle = .overCurrentContext
self.present(infoViewController, animated: true, completion: nil)
infoViewController.displayInfo()
Run Code Online (Sandbox Code Playgroud)

(注意:最后我将只有一个实例,InfoViewController但这只是用于测试.我不希望全局实例会有任何区别吗?)

正如我所说,无论是在viewDidLoad()方法内部还是在displayInfo()方法中,info总是nil如此,设置其attributedString属性会使应用程序崩溃.认为这个present方法可能是异步调用的,我试过displayInfo()从内部调用viewDidLoad(),但这没有任何区别.

任何人都可以告诉我我忘记了什么会让我IBOutlet正确地初始化吗?

谢谢!

大卫

xcode uiviewcontroller viewdidload ios swift

7
推荐指数
1
解决办法
8661
查看次数

标签 统计

ios ×1

swift ×1

uiviewcontroller ×1

viewdidload ×1

xcode ×1