Reputation: 85
I have a webView in my ViewController. I have created a BullsEye.html file in my project and I want to show that html file in my web view. Following is my code
if let url = Bundle.main.url(forResource: "BullsEye",
withExtension: "html") {
if let htmlData = try? Data(contentsOf: url) {
let baseURL = URL(fileURLWithPath: Bundle.main.bundlePath)
webView.load(htmlData, mimeType: "text/html",
textEncodingName: "UTF-8", baseURL: baseURL)
}
}
The above code is written in viewDidLoad. What am I missing?
Upvotes: 0
Views: 1082
Reputation: 2388
There is no problem with your source code itself, I think.
But maybe does Bundle.main.url(forResource: "BullsEye", withExtension: "html")
return nil?
If so, you should check for the two things below:
Whether the file to be read is included in Copy Bundle Resources
Files to be included in the project are registered in TARGETS> Build Phases> Copy Bundle Resources
.
Whether the file to be read exists in the project directory
Open the project directory in the Finder and check if the file you are trying to load actually exists.
Hope this helps!
Upvotes: 1
Reputation: 36610
I ran your code as is and was able to make things work as seen here after changing the webView loader code. This tells me you likely have a UIWebView lurking somewhere, likely your view in storyboard.
I would recommend you make sure that you are consistently using WKWebView throughout:
WebKit
in your class fileWKWebView
and not the deprecated UIWebViewUpvotes: 2
Reputation: 616
Below code will help you.
func loadHtmlFile() {
if let fileurl = Bundle.main.url(forResource: "BullsEye", withExtension: "html") {
let request = URLRequest(url: fileurl!)
webView.loadRequest(request)
}
}
See - swiftdeveloperblog
Also if the code don't seem to work for you, make sure to open html file in any browser and check if it's a valid html file.
Upvotes: 0