gpt4 book ai didi

ios - 从 SafariWebController 返回后出现 Swift 白屏

转载 作者:行者123 更新时间:2023-11-29 05:15:19 29 4
gpt4 key购买 nike

当我打开 Safari View Controller 然后返回到我的应用程序(按下“完成”时)时,我的应用程序会呈现空白/白色屏幕,而不是该 View 的内容。

下面的代码是我在空 View 中尝试使用的代码 - 无论我在应用程序中的哪个位置尝试,都会出现问题。

import UIKit
import SafariServices

class SavedViewController: UIViewController, SFSafariViewControllerDelegate {

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
if let link = URL(string: "https://google.com"){
let myrequest = SFSafariViewController(url: link)
myrequest.delegate = self
present(myrequest, animated:true)
}
}

func safariViewControllerDidFinish(_ controller: SFSafariViewController) {
dismiss(animated:true, completion: nil)
}

}

网站加载正常,当我返回应用程序时,出现空白屏幕。我做错了什么吗?

最佳答案

它工作正常。您刚刚以这种方式创建了新的 UIViewController,UIViewController 默认情况下具有黑色背景。因此,当您按“完成”时,您只需从 SafariViewController 返回到 SavedViewController (UIViewController)。可能您正在寻找 UIWebView 解决方案 https://developer.apple.com/documentation/uikit/uiwebview .如果您只想显示 SafariViewController 将其作为 ViewController 中的函数来执行,则无需使用 UIViewController 类创建新文件来执行此操作。

import UIKit
import SafariServices

class SavedViewController: UIViewController, SFSafariViewControllerDelegate {

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.

view.backgroundColor = .gray
setupViews()
}

func safariViewControllerDidFinish(_ controller: SFSafariViewController) {
dismiss(animated:true, completion: nil)
}

private func setupViews(){
view.addSubview(openSafariButton)
openSafariButton.addTarget(self, action: #selector(handleOpenSafariButtonTap), for: .touchUpInside)
openSafariButton.frame = CGRect(x: 0, y: 100, width: view.frame.width, height: 60)
}

@objc func handleOpenSafariButtonTap(){
if let link = URL(string: "https://google.com"){
let myrequest = SFSafariViewController(url: link)
myrequest.delegate = self
present(myrequest, animated:true)
}
}

let openSafariButton: UIButton = {
let button = UIButton()
button.setTitle("openSafari", for: .normal)
button.setTitleColor(.black, for: .normal)
button.backgroundColor = .red
return button
}()

}

这就是我的意思。

您可以添加功能:

    private func openSafariLink(link: String){
if let link = URL(string: link){
let myrequest = SFSafariViewController(url: link)
present(myrequest, animated:true)
}
}

并从任何类似的地方调用它:

openSafariLink(link: "https://google.com")

这种方式更适合您的解决方案。

关于ios - 从 SafariWebController 返回后出现 Swift 白屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59247092/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com