一部の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
}
}