0

一部のviewControllerで共有されるメニューがあります。重複を避けるために、メニューに独自の nib ファイルを付けました。このコード スニペットを使用してメニューを読み込みます。メニューはファイルからロードされますが、保持されません。

所有者を設定すると、メニューは保持されますが、viewController の他のすべてのアウトレットが失われます。

このメニューを迅速に保持するにはどうすればよいですか?

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
    }
}
4

0 に答える 0