Код: Выделить всё
WebPageМоя первая настройка была:
Код: Выделить всё
struct ContentView: View {
@State private var selectedTab: Tabs = .home
var body: some View {
TabView(selection: $selectedTab) {
ForEach(Tabs.allCases, id: \.self) { tab in
Tab(tab.title, systemImage: tab.icon, value: tab) {
WebView(url: tab.url)
}
}
}
}
}
< /code>
Это работает, но не так, как я хотел. Приведенный выше код создает новый экземпляр WebView @State private var selectedTab: Tabs = .home
var body: some View {
BrowserContainer()
TabView(selection: $selectedTab) {
ForEach(Tabs.allCases, id: \.self) { tab in
Tab(tab.title, systemImage: tab.icon, value: tab) {
Color.red // I made this red to see why the WebView only was 50% of the display height
.onAppear() {
WebViewManager.shared.load(tab.url)
}
}
}
}
}
}
@MainActor
final class WebViewManager: ObservableObject {
static let shared = WebViewManager()
let page: WebPage
let webView: WebView
private init() {
self.page = WebPage()
self.webView = WebView(page)
}
func load(_ url: URL) {
page.load(URLRequest(url: url))
}
}
struct BrowserContainer: View {
@ObservedObject private var manager = WebViewManager.shared
var body: some View {
manager.webView
.ignoresSafeArea()
}
}
< /code>
Но, будучи разработчиком C# для жизни, полученный код сделал меня больным. Это было некрасиво и хакерское, и я был уверен, что это не путь. Вот что заставило меня решить создать этот пост и, надеюсь, получить некоторые знания опытных разработчиков, которые сделали что -то похожее на это. Это будет основная навигация по различным страницам с использованием Tabbar, но также и специальных URL -адресов из уведомлений.
Подробнее здесь: https://stackoverflow.com/questions/797 ... navigation
Мобильная версия