Swift 在Web视图中加载HTML时永不结束的循环
我尝试用现有网站加载webView 我在导航栏上添加了带有url链接的按钮:Swift 在Web视图中加载HTML时永不结束的循环,swift,uiwebview,navigationbar,Swift,Uiwebview,Navigationbar,我尝试用现有网站加载webView 我在导航栏上添加了带有url链接的按钮: override func viewDidLoad() { super.viewDidLoad() webView.delegate = self var myHTMLString = "" guard let myURL = URL(string: domainURLString) else { print("Error: \(domainURLString) d
override func viewDidLoad() {
super.viewDidLoad()
webView.delegate = self
var myHTMLString = ""
guard let myURL = URL(string: domainURLString) else {
print("Error: \(domainURLString) doesn't seem to be a valid URL")
return
}
do {
myHTMLString = try String(contentsOf: myURL, encoding: .utf8)
} catch let error {
print("Error: \(error)")
}
webView.frame = view.bounds
webView.scalesPageToFit = true
createBottomNavigationBar()
webView.loadHTMLString(myHTMLString as String, baseURL: nil)
}
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
print("===============================start===============================")
let myURLString:String = (request.url?.absoluteString)!
var myHTMLString = ""
if navigationType == UIWebViewNavigationType.linkClicked {
print("link clicked")
webView.stopLoading()
var myHTMLString = ""
let myURL = URL(string: myURLString)
do {
myHTMLString = try String(contentsOf: myURL!, encoding: .utf8)
} catch let error {
print("Error: \(error)")
return true
}
webView.loadHTMLString(myHTMLString as String, baseURL: nil)
print("first")
print(request.url)
}else if(navigationType == UIWebViewNavigationType.other){
print("This is for Navigation Button click")
//webView.loadHTMLString(myHTMLString as String, baseURL: nil)
}
else{
print("else")
}
return true
但是,当我取消注释时
webView.loadHTMLString(myHTMLString as String, baseURL: nil)
在本声明中:
}else if(navigationType == UIWebViewNavigationType.other){
应用程序将永远循环
该语句用于当其中一个导航按钮单击时触发。它重定向到内部url,如。,这将是基于代码的预期行为。线路
webView.loadHTMLString(myHTMLString as String, baseURL: nil)
在viewDidLoad中,将尝试加载HTML。这将依次调用委托方法
webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool
在委托方法内部,当代码遇到elseif情况时,它将再次调用
webView.loadHTMLString(myHTMLString as String, baseURL: nil)
这将再次调用委托方法。这是一个循环。代码正常工作。你需要改变逻辑