SwiftUI: WebView перезагружается, если представлен ActionSheet - PullRequest
0 голосов
/ 13 марта 2020

В моем пользовательском интерфейсе есть WebView, который я загружаю только во время создания экземпляра. Но если я представлю лист действий, он снова загрузит его содержимое. Любая идея, почему?

struct DetailView: View {

    let url: URL
    private let NC = NotificationCenter.default
    @State private var showingSheet = false
    @Environment(\.presentationMode) private var presentationMode
    var webView: WebView

    init(url: URL){
        self.url = url
        webView = WebView(url: url)
    }


    var body: some View {

        ZStack{
         ShakableViewRepresentable().allowsHitTesting(false).onAppear(){
         self.NC.addObserver(forName: Constants.shakeNotification, object: nil, queue: nil, using: self.shakeDetected)
         }

        webView
            .padding( .bottom, -40.0)
            .padding(.top , -45.0)
            .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .topLeading)
            .edgesIgnoringSafeArea(.all)

            .actionSheet(isPresented: $showingSheet) {
                ActionSheet(title: Text("What do you want to do?"), message: Text("There's only one choice..."), buttons: [.default(Text("Restart")), .default(Text("Exit"), action: {
                    self.presentationMode.wrappedValue.dismiss()
                }), .cancel()])
            }

        }
        .hideNavigationAndStatusBar()

    }


    func shakeDetected(_ notification: Notification) {
        showingSheet = true
    }

}

Некоторые примечания: С ShakableViewRepresentable я обнаруживаю жест встряхивания. Если это обнаружено, я представляю лист действий. hideNavigationAndStatusBar () делает то, что он называется.

Редактировать: Вот мой WebView:

struct WebView: UIViewRepresentable{

    var url: URL

    func makeUIView(context: UIViewRepresentableContext<WebView>) -> WKWebView {
        return WKWebView()
    }

    func updateUIView(_ uiView: WKWebView, context: UIViewRepresentableContext<WebView>) {
        let request = URLRequest(url: url)
        uiView.load(request)
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...