Я работаю над приложением macOS SwiftUI. Он имеет команду меню «Файл-> Открыть местоположение…», которая использует Segue в IB для модального представления NSWindowController, который содержит подкласс NSHostingController. Мой подкласс выглядит следующим образом:
class
OpenLocationController: NSHostingController<OpenLocationView>
{
@objc
required
dynamic
init?(coder: NSCoder)
{
super.init(coder: coder, rootView: OpenLocationView())
}
}
, и мой взгляд выглядит так:
struct
OpenLocationView : View
{
@State private var location: String = ""
var body: some View
{
VStack
{
HStack
{
Text("Movie Location:")
TextField("https://", text: $location)
}
HStack
{
Spacer()
Button("Cancel") { /* dismiss window */ }
Button("Open") { }
}
}
.padding()
.frame(minWidth: 500.0)
}
}
Я попытался добавить свойство @Environment(\.presentationMode) var presentationMode
и вызвать self.presentationMode.wrappedValue.dismiss()
в действии кнопки, но оно не имеет видимого эффекта.
Как закрыть это окно, когда пользователь нажимает кнопку Отмена?