Swift / iOS: IBOutlet nil после загрузки контроллера вида

Я создаю приложение (в XCode 8.2.1), в котором некоторые объекты отображаются на 2D-доске, и когда пользователь нажимает на один из этих объектов, некоторая информация должна отображаться об этом в виде модального информационного окна. Мой дизайн состоит в том, чтобы информация была записана в отдельном контроллере представления, который я буду отображать при необходимости.

Я разработал базовую заглушку для второго контроллера представления и добавил к ней одну метку в конструкторе интерфейсов. Затем я связал этот ярлык с моим пользовательским классом VC:

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

Однако когда я тестирую свое приложение и нажимаю на объект,info полеnil даже вviewDidLoad() метод моего пользовательского класса VC. Я показываю свой VC следующим образом:

let infoViewController = InfoViewController()
infoViewController.modalPresentationStyle = .overCurrentContext
self.present(infoViewController, animated: true, completion: nil)
infoViewController.displayInfo()

(Примечание: в конце у меня будет только один экземплярInfoViewController но это только для тестирования. Я не ожидаю, что глобальный экземпляр будет иметь какое-либо значение?)

Как я уже сказал, будь внутриviewDidLoad() метод или вdisplayInfo() метод,info всегдаnil, такой что постановка егоattributedString Атрибут вылетает приложение. Думаяpresent метод может быть вызван асинхронно, я пытался вызватьdisplayInfo() изнутриviewDidLoad(), но это не имело никакого значения.

Может ли кто-нибудь сказать мне, что я забыл, что позволило бы мойIBOutlet от правильной инициализации правильно?

Спасибо!

Дэвид

Ответы на вопрос(3)

Ваш ответ на вопрос