Как добавить панель поиска в MenuBarExtra с помощью SwiftUI
macOS 13.0+, Apple представляет новый API под названием MenuBarExtra, который может добавлять строку меню в macOS. Но я не могу добавить в контент протокол с возможностью поиска, чтобы добавить представление поиска?
@main
struct AppWithMenuBarExtra: App {
@AppStorage("showMenuBarExtra") private var showMenuBarExtra = true
var body: some Scene {
WindowGroup {
ContentView()
}
MenuBarExtra(
"App Menu Bar Extra", systemImage: "star",
isInserted: $showMenuBarExtra)
{
NavigationLink {
Text("Search")
}.searchable()
}
}
}
Я ожидаю, что панель поиска может отображаться в меню.
1 ответ
Я решил эту проблему, вот мое решение:
Мы не можем добавитьNavigationLink
и его протоколsearchable
в сцену для добавления представления поиска, но мы можем добавитьTextField
в качестве панели поиска вMenuBarExtra
когда мы устанавливаем модификатор.menuBarExtraStyle
к.window
:
@main
struct AppWithMenuBarExtra: App {
@AppStorage("showMenuBarExtra") private var showMenuBarExtra = true
@State private var searchText: String
var body: some Scene {
WindowGroup {
ContentView()
}
MenuBarExtra(
"App Menu Bar Extra", systemImage: "star",
isInserted: $showMenuBarExtra) {
TextField("Input the search text",text: $searchText)
.onSubmit {
// do search action
}
}
.menuBarExtraStyle(.window) // open item as popover window
}
}