SafariView仅加载一个网址,似乎无法加载另一个网址

matthias_code

我想在应用程序内的Safari浏览器中加载特定的网页(即不在应用程序外部),并且它应该存在于相同的safari环境中,即没有常规的Webview。

我要SafariView在SwiftUI中启用它。

现在,我想从同一场景加载不同的URL(数量不同,可以为0到20位数)。

当我打开SafariViews时,虽然只打开了第一个URL。当我单击第二个按钮时,第一个URL再次被加载。

import SwiftUI
import SafariServices

struct ContentView: View {
  @State private var showSafari = false
  
  var body: some View {
    VStack {
      Button(action: {
        showSafari = true
      }) {
        Text("Apple")
          .padding()
      }
      .fullScreenCover(isPresented: $showSafari) {
        SafariView(url: URL(string: "http://www.apple.com")!)
      }
      
      Button(action: {
        showSafari = true
      }) {
        Text("Google")
          .padding()
      }
      .fullScreenCover(isPresented: $showSafari) {
        SafariView(url: URL(string: "http://www.google.com")!)
      }
    }
  }
}

struct SafariView: UIViewControllerRepresentable {
  var url: URL
  
  func makeUIViewController(
    context: UIViewControllerRepresentableContext<SafariView>
  ) -> SFSafariViewController {
    return SFSafariViewController(url: url)
  }
  
  func updateUIViewController(
    _ uiViewController: SFSafariViewController,
    context: UIViewControllerRepresentableContext<SafariView>
  ) {}
}

我在另一个场景中所做的是创建2个单独的showSafari变量,似乎可以正常工作,但在那种情况下,仅显示2个硬编码的url。

在这个野生动物园实施过程中我缺少什么,还是我可能需要通过创建showSafari布尔数组来解决此问题

pawello2222

尝试使用.fullScreenCover(item:content:)

struct ContentView: View {
    @State private var safariURL: String?

    var body: some View {
        VStack {
            Button(action: {
                safariURL = "http://www.apple.com"
            }) {
                Text("Apple")
                    .padding()
            }

            Button(action: {
                safariURL = "http://www.google.com"
            }) {
                Text("Google")
                    .padding()
            }
        }
        .fullScreenCover(item: $safariURL) {
            if let url = URL(string: $0) {
                SafariView(url: url)
            }
        }
    }
}

请注意,您需要在中传递一些Identifiable变量item一个可能的解决方案是使String符合Identifiable

extension String: Identifiable {
    public var id: Self { self }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

htaccess重定向一个网址以从另一个网址加载

来自分类Dev

htaccess重定向一个网址以从另一个网址加载

来自分类Dev

检查某些网址是否已完成加载,然后在WebView中打开另一个网址

来自分类Dev

如何使用网址中间的哈希将网址重定向到另一个网址

来自分类Dev

从另一个iframe更改网址

来自分类Dev

Scrapy呼叫另一个网址

来自分类Dev

图片按钮打开另一个网址

来自分类Dev

从另一个网址获取参数值

来自分类Dev

Codeigniter网址设置为另一个页面

来自分类Dev

Scrapy呼叫另一个网址

来自分类Dev

将json发布到另一个网址

来自分类Dev

如何将一个页面网址重定向到另一个

来自分类Dev

将一个网站的网址更改为另一个

来自分类Dev

重写规则将一个网址转发到另一个wordpress

来自分类Dev

如何将一个页面网址重定向到另一个

来自分类Dev

Django 不会从一个视图/网址重定向到另一个

来自分类Dev

使用.htaccess将网址从一个图像更改为另一个网址

来自分类Dev

使用.htaccess将网址从一个图像更改为另一个网址

来自分类Dev

denyAll()重定向到登录网址,但我需要另一个网址

来自分类Dev

如何将动态网址传递给另一个网址

来自分类Dev

denyAll()重定向到登录网址,但我需要另一个网址

来自分类Dev

使用Javascript将页面网址替换为另一个网址

来自分类Dev

无法加载,因为已经加载了另一个具有相同文件的 AssetBundle

来自分类Dev

如何在另一个模块加载之前加载一个模块?

来自分类Dev

似乎无法让 ajax 在另一个内部工作

来自分类Dev

如何从另一个包中仅导入一个函数,而不加载整个名称空间

来自分类Dev

处理另一个加载项的提示

来自分类Dev

从另一个ViewController重新加载UIPickerView的数据

来自分类Dev

加载另一个JavaScript文件并访问var

Related 相关文章

  1. 1

    htaccess重定向一个网址以从另一个网址加载

  2. 2

    htaccess重定向一个网址以从另一个网址加载

  3. 3

    检查某些网址是否已完成加载,然后在WebView中打开另一个网址

  4. 4

    如何使用网址中间的哈希将网址重定向到另一个网址

  5. 5

    从另一个iframe更改网址

  6. 6

    Scrapy呼叫另一个网址

  7. 7

    图片按钮打开另一个网址

  8. 8

    从另一个网址获取参数值

  9. 9

    Codeigniter网址设置为另一个页面

  10. 10

    Scrapy呼叫另一个网址

  11. 11

    将json发布到另一个网址

  12. 12

    如何将一个页面网址重定向到另一个

  13. 13

    将一个网站的网址更改为另一个

  14. 14

    重写规则将一个网址转发到另一个wordpress

  15. 15

    如何将一个页面网址重定向到另一个

  16. 16

    Django 不会从一个视图/网址重定向到另一个

  17. 17

    使用.htaccess将网址从一个图像更改为另一个网址

  18. 18

    使用.htaccess将网址从一个图像更改为另一个网址

  19. 19

    denyAll()重定向到登录网址,但我需要另一个网址

  20. 20

    如何将动态网址传递给另一个网址

  21. 21

    denyAll()重定向到登录网址,但我需要另一个网址

  22. 22

    使用Javascript将页面网址替换为另一个网址

  23. 23

    无法加载,因为已经加载了另一个具有相同文件的 AssetBundle

  24. 24

    如何在另一个模块加载之前加载一个模块?

  25. 25

    似乎无法让 ajax 在另一个内部工作

  26. 26

    如何从另一个包中仅导入一个函数,而不加载整个名称空间

  27. 27

    处理另一个加载项的提示

  28. 28

    从另一个ViewController重新加载UIPickerView的数据

  29. 29

    加载另一个JavaScript文件并访问var

热门标签

归档