使用 webview 后如何使用 segue?
Posted
技术标签:
【中文标题】使用 webview 后如何使用 segue?【英文标题】:how to use segue after using webview? 【发布时间】:2019-12-18 15:38:15 【问题描述】:当我退出 web 视图时如何执行 segue?它不断抛出 sigbart 错误
class Sample: UIViewController, WKUIDelegate
var url = String()
@IBOutlet var webView: WKWebView!
override func viewDidLoad()
super.viewDidLoad()
let myURL = URL(string:"\(url)")
let myRequest = URLRequest(url: myURL!)
webView.configuration.preferences.javascriptEnabled = true
webView.load(myRequest)
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0)
self.performSegue(withIdentifier: "toMain", sender: self)
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
webView.stopLoading()
【问题讨论】:
var url = String() 有上一个视图传过来的数据 您应该将第 3 行更改为@IBOutlet var webView: WKWebView?
并将所有对 webView
的引用替换为 webView?
以避免分段错误
【参考方案1】:
如果 webview 在 segue 上崩溃,则不应该与它有关。如果您尝试推送到新控制器,请确保您的标识符设置如下:
如果您只是想返回一个控制器,您可以使用:
self.dismiss(animated: true, completion: nil)
代替:
self.performSegue(withIdentifier: "toMain", sender: self)
如果您需要返回多个视图,请查看 unwindToSegue 功能。
我还会考虑将 stopLoading 函数移至 viewWillDisappear
,因为它与 segue 本身无关。
override func viewWillDisappear(_ animated: Bool)
super.viewWillDisappear(animated)
self.webView.stopLoading()
【讨论】:
解雇工作,但我想去不同的观点,而不是前一个。但是在使用 segue 时,我不断收到 sigbart 错误。 segue 适用于不同的视图,但是当我尝试退出 webview 时,它会不断抛出 sigbart 错误。我还仔细检查了标识符,它与我的代码完全一样 您尝试访问的视图控制器是否已经在堆栈中? 是的。解雇函数有效,但我需要传递数据,所以我需要使用 segue。我也没有任何按钮。满足条件后自动返回主模块。 抱歉,这似乎超出了原始问题的范围。如果您想了解如何在解雇时传递数据,请尝试:***.com/a/43706791/12555191以上是关于使用 webview 后如何使用 segue?的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中使用 shouldPerformSegue() 检查字段后如何继续使用 segue
执行 segue 后如何删除 UIViewController?