0
Wenn Sie einen ViewController über ein Storyboard (NS oder UI) initialisieren, müssen Sie einen Verweis auf das Storyboard behalten oder können Sie es einfach ignorieren, wenn Sie damit fertig sind und es dann löschen lassen?Storyboard-Initialisierung und Deinit
class ViewController: NSViewController {
var secondarySB: NSStoryboard? = nil
@IBAction
func loadAndKeep(_ sender: NSButton) {
//keeping a reference
secondarySB = NSStoryboard.init(name: NSStoryboard.Name.init(rawValue: "Secondary"), bundle: nil)
let vc = secondarySB?.instantiateInitialController() as! Secondary
self.view.addSubview(vc.view)
}
@IBAction
func load(_ sender: NSButton) {
//ignoring the storyboard after I get the viewcontroller
let sb = NSStoryboard.init(name: NSStoryboard.Name.init(rawValue: "Secondary"), bundle: nil)
let vc = sb.instantiateInitialController() as! Secondary
self.view.addSubview(vc.view)
}
}
Ich habe festgestellt, dass Sie mit "wie!" Gewirkt haben; Dies wird normalerweise nicht empfohlen, sollten Sie stattdessen "wie?" und dann "vc? .view" für den Fall, dass etwas schief gelaufen ist. Es gibt ein nettes Tool namens SwiftLint, das diese Art von Zeugs abfängt und Build-Warnungen generiert. – ekscrypto
kann es sein, dass es nicht nötig ist, die Referenz des Storyboards zu behalten –