Сохранить объект верхнего уровня, загруженный из пера

У меня есть меню, которое используется некоторыми viewControllers. Чтобы избежать дублирования, я дал меню свой собственный файл пера. Я загружаю меню с этим фрагментом кода. Меню загружается из файла, но не сохраняется.

Если я установлю владельца, меню будет сохранено, но тогда я потеряю все другие выходы в моем viewController.

Как сохранить это меню в Swift?

override func viewDidLoad()
{
    super.viewDidLoad()

    var xibItems : NSArray?
    NSBundle.mainBundle().loadNibNamed("Menu", owner: nil, topLevelObjects: &xibItems)
    if let xibMenu = xibItems?.firstObject as? NSMenu
    {
        self.popupButton.menu = xibMenu
        println(xibMenu) //ok
    }
}

редактировать:

Присвоение меню локальной переменной (для сохранения строгой ссылки) не помогает. Но если я назначу локальную переменную и выведу ее на печать, то это сработает. Это не совсем удовлетворительно, потому что я не хочу заявления println. Избегать дополнительных локальных переменных тоже будет плюсом.

override func viewDidLoad()
{
    super.viewDidLoad()

    var xibItems : NSArray?
    NSBundle.mainBundle().loadNibNamed("Menu", owner: nil, topLevelObjects: &xibItems)
    if let xibMenu = xibItems?.firstObject as? NSMenu
    {
        self.popupButton.menu = xibMenu // popupButton is an IBOutlet
        self.popupMenu = xibMenu  //local variable
        println(xibMenu) //ok
    }
}

0 ответов

Другие вопросы по тегам