我有一個NSWindowController
,它顯示一個表格,並使用另一個控制器作爲數據源並委託NSTableView
。第二個控制器顯示來自對象的信息,該對象由NSWindowController
傳入。該控制器依次將對象設置爲AppDelegate
的屬性。它看起來像這樣:傳遞永遠不會變成NSWindowController的對象的正確方法是什麼?
class SomeWindowController: NSWindowController {
var relevantThing: Thing!
var someTableController: SomeTableController!
@IBOutlet weak var someTable: NSTableView!
override func windowDidLoad() {
someTableController = SomeTableController(thing: relevantThing)
someTable.dataSource = someTableController
someTable.delegate = someTableController
}
}
在AppDelegate
我那麼做類似
func applicationDidFinishLaunching(_ aNotification: Notification) {
relevantThing = Thing()
someWindowController = SomeWindowController()
someWindowController.relevantThing = relevantThing
someWindowController.showWindow(nil)
}
這是一個合理的做法?我覺得在SomeWindowController
中使用的隱含解包選項可能是不好的形式。另外,relevantThing
不允許改變我的情況,所以我覺得let
會更正確。也許relevantThing
應該保持不變,並通過初始化器傳入?或者會打破init?(coder: NSCoder)
初始值設定項?
我非常感謝任何建議,因爲我試圖感受到在Swift中做正確的事情。
謝謝,你說服我看看故事板,他們肯定是前進的方向。欣賞它! –