#swift #swiftui
Вопрос:
Я пытаюсь получить доступ к классу в своем представлении настроек
struct SettingsView: View { @StateObject var stat = StatusBarController() .....}
Но я получаю ошибку из-за отсутствующего параметра в StatusBarController()
Отсутствует аргумент для параметра #1 в вызове
Вставьте ‘lt;#NSPopover#gt;’
Класс контроллера управления статусом
class StatusBarController: ObservableObject { private var statusBar: NSStatusBar private var popover: NSPopover private var eventMonitor: EventMonitor? private var content: ContentView? init(_ popover: NSPopover) { self.popover = popover statusBar = NSStatusBar.init() if let statusBarButton = statusItem.button { ........ } eventMonitor = EventMonitor(mask: [.leftMouseDown, .rightMouseDown], handler: mouseEventHandler) } .......}
Ответ №1:
Если вы хотите использовать конструктор по умолчанию для StateObject
инициализации , укажите всплывающее окно по умолчанию в контроллере init
, например
class StatusBarController: ObservableObject { private var statusBar: NSStatusBar private var popover: NSPopover private var eventMonitor: EventMonitor? private var content: ContentView? init(_ popover: NSPopover = NSPopover()) // lt;lt; here !! { ...
альтернативный вариант-сделать его необязательным (и соответственно обновить каждую зависимость).