나는 NSWindowController
테이블을 보여 주며 다른 컨트롤러를 데이터 소스로 사용하고 NSTableView
을 위임합니다. 이 두 번째 컨트롤러는 객체의 정보를 표시하며 NSWindowController
에 의해 전달됩니다. 해당 컨트롤러는 AppDelegate
에 의해 속성으로 설정된 개체를 갖습니다. 그것은 다음과 같습니다 다음 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
}
}
그때
func applicationDidFinishLaunching(_ aNotification: Notification) {
relevantThing = Thing()
someWindowController = SomeWindowController()
someWindowController.relevantThing = relevantThing
someWindowController.showWindow(nil)
}
같은이 합리적인 방법입니다합니까? 암시 적으로 랩핑되지 않은 선택자 인 SomeWindowController
에서 사용 된 것 같은 나쁜 형태 일 수 있습니다. 또한, 내 경우에는 relevantThing
을 변경할 수 없으므로 let
이 더 정확할 것이라고 생각합니다. 어쩌면 relevantThing
을 일정하게 만들고 이니셜 라이저를 통과시켜야할까요? 또는 init?(coder: NSCoder)
이니셜 라이저를 깰 수 있습니까?
Swift에서 올바른 작업을 수행 할 수있는 느낌을 얻으 려하므로 어떤 제안이라도 대단히 감사하겠습니다.
감사합니다. 스토리 보드를 확인해 주셔서 감사합니다. 앞으로 나아갈 길입니다. 고맙습니다! –