Я пытаюсь создать приложение для macOS, например Photos.app. NSWindowController
имеет панель инструментов с сегментированным элементом управления. Когда вы нажимаете на сегментированный элемент управления, он заменяет NSViewController
на NSWindowController
.
Пока что у меня есть NSWindowController
с NSViewController
. У меня есть подкласс NSWindowController
, где у меня есть метод, который вызывается всякий раз, когда пользователь нажимает на сегментированный элемент управления.
По сути, какой бы сегмент ни был нажат, он создаст экземпляр необходимого контроллера представления и установит его в свойство contentViewController
NSWindowController
.
Это правильный способ сделать это?
Кроме того, я думаю, что NSWindowController
должен иметь свойства для каждого из NSViewController
, на которые он может переключаться, которые загружаются лениво (загружаются, когда пользователь нажимает на них, и они удерживаются для повторного использования, чтобы предотвратить повторную инициализацию).
Код:
import Cocoa
class MainWindowController: NSWindowController
{
var secondaryViewController:NSViewController?
override func windowDidLoad()
{
super.windowDidLoad()
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
}
@IBAction func segmentedControlDidChange(_ sender: NSSegmentedControl)
{
print("Index: \(sender.selectedSegment)")
if sender.selectedSegment == 3 {
if secondaryViewController == nil {
let viewController = storyboard?.instantiateController(withIdentifier: "SecondaryViewController") as! NSViewController
secondaryViewController = viewController
}
self.window?.contentViewController = self.secondaryViewController
}
}
}
Я новичок в разработке для macOS, однако уже довольно давно занимаюсь iOS. Если есть лучший способ, я хотел бы знать об этом. Спасибо!!!