Lokale html in UIWebView laden met swift

Deze maakt me gek vanochtend vroeg. Ik wil wat lokale html in een webweergave laden:

class PrivacyController: UIViewController {
    @IBOutlet weak var webView:UIWebView!
    override func viewDidLoad() {
        let url = NSURL(fileURLWithPath: "privacy.html")
        let request = NSURLRequest(URL: url!)
        webView.loadRequest(request)
    }
}

Het html-bestand bevindt zich in de hoofdmap van mijn project, maar bevindt zich in een groep. De webview is leeg voor mij. Enig idee wat er mis is? Ik gebruik xcode 6.1 en voer dit voorbeeld uit op mijn iphone 6.


Antwoord 1, autoriteit 100%

Als u URL’s voor toepassingsbronnen wilt ophalen, moet u de methode URLForResourcevan de klasse NSBundlegebruiken.

Swift 2

let url = NSBundle.mainBundle().URLForResource("privacy", withExtension:"html") 

Swift 3

let url = Bundle.main.url(forResource: "privacy", withExtension: "html")

Antwoord 2, autoriteit 33%

Swift 3: typ veilig

@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
    super.viewDidLoad()
    // Adding webView content
    do {
        guard let filePath = Bundle.main.path(forResource: "myFile", ofType: "html")
            else {
                // File Error
                print ("File reading error")
                return
        }
        let contents =  try String(contentsOfFile: filePath, encoding: .utf8)
        let baseUrl = URL(fileURLWithPath: filePath)
        webView.loadHTMLString(contents as String, baseURL: baseUrl)
    }
    catch {
        print ("File HTML error")
    }
}

Houd in gedachten: NS = Not Swift :]


Antwoord 3, autoriteit 21%

// Point UIWebView
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
    super.viewDidLoad()
    //load a file
    var testHTML = NSBundle.mainBundle().pathForResource("privacy", ofType: "html")
    var contents = NSString(contentsOfFile: testHTML!, encoding: NSUTF8StringEncoding, error: nil)
    var baseUrl = NSURL(fileURLWithPath: testHTML!) //for load css file
    webView.loadHTMLString(contents, baseURL: baseUrl)
}

Antwoord 4, autoriteit 14%

Swift 3met 3regels 🙂

if let url = Bundle.main.url(forResource: "privacy", withExtension: "html") {
    webview.loadRequest(URLRequest(url: url))
}

Antwoord 5, autoriteit 11%

Snelle versie 2.1

dit geval bevat ook codering

// load HTML String with Encoding
let path = NSBundle.mainBundle().pathForResource("policy", ofType: "html")
do {
    let fileHtml = try NSString(contentsOfFile: path!, encoding: NSUTF8StringEncoding)
    webView.loadHTMLString(fileHtml as String, baseURL: nil)
}
catch {
}

Antwoord 6, autoriteit 9%

Voeg het lokale HTML-bestand toe aan uw project en noem dat bestand home.html, en maak vervolgens het NSURLRequest met behulp van het NSURL-object. Nadat het verzoek is doorgegeven aan de webweergave, wordt de gevraagde URL in de webweergave geladen en als u geen storyboard gebruikt, voegt u de uiwebview toe aan de weergavecontrollerweergave zoals de onderstaande code. 

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let localfilePath = NSBundle.mainBundle().URLForResource("home", withExtension: "html");
        let myRequest = NSURLRequest(URL: localfilePath!);
        myWebView.loadRequest(myRequest);
        self.view.addSubview(myWebView)
    }

Raadpleeg voor meer informatie deze http://sourcefreeze.com/ uiwebview-voorbeeld-met-swift-in-ios/


Antwoord 7, autoriteit 6%

Dit werkt voor mij:

@IBOutlet weak var mWebView: UIWebView!
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    mWebView.loadRequest(NSURLRequest(URL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("fineName", ofType: "html")!)))
}

App Transport Security Settingstoegevoegd met Dictionarytyp het bestand info.plistin. Ook een subsleutel toegevoegd Allow Arbitrary Loadsvoor App Transport Security Settingsmet type Booleanen waarde YES.

Hieris de tutorial.

BEWERKT

Voor Swift 3 (Xcode 8)

mWebView.loadRequest(URLRequest(url: URL(fileURLWithPath: Bundle.main.path(forResource: "test/index", ofType: "html")!)))

Antwoord 8, autoriteit 4%

U kunt een html-tekenreeks of een lokaal html-bestand laden in UIWebView.

HTML-tekenreeks:

func loadHtmlCode() {
    let htmlCode = "<html><head><title>Wonderful web</title></head> <body><p>wonderful web. loading html code in <strong>UIWebView</strong></></body>"
    webView.loadHTMLString(htmlCode, baseURL: nil)
}

HTML-bestand:

func loadHtmlFile() {
    let url = NSBundle.mainBundle().URLForResource("contactus", withExtension:"html")
    let request = NSURLRequest(URL: url!)
    webView.loadRequest(request)
}

Details zijn hier te vinden:
http://webindream.com/load-html-uiwebview-using-swift/


Antwoord 9, autoriteit 4%

Hier is een beknopte versie voor Swift 4

1) Importeren toevoegen import WebKit

2) Voeg WebKit.frameworktoe aan uw project

voer hier de afbeeldingsbeschrijving in

@IBOutlet weak var webView: WKWebView!
if let filePath = Bundle.main.url(forResource: "FILE_NAME", withExtension: "html") {
  let request = NSURLRequest(url: filePath)
  webView.load(request as URLRequest)
}

Antwoord 10, autoriteit 2%

Voor swift 3 Gebruik dit:

do
    {
        let testHTML = Bundle.main.path(forResource: "about", ofType: "html")
        let contents =  try NSString(contentsOfFile: testHTML!, encoding: String.Encoding.utf8.rawValue)
        let baseUrl = NSURL(fileURLWithPath: testHTML!) //for load css file
        mWebView.loadHTMLString(contents as String, baseURL: baseUrl as URL)
    }
    catch
    {
    }

Antwoord 11, autoriteit 2%

Swift 4.2, Xcode 10.1, WKWebView laadt HTML uit bestand. UIWebView is verouderd.

Gebruik in apps die draaien op iOS 8 en hoger de WKWebView-klasse in plaats van UIWebView.

import WebKit
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
    super.viewDidLoad()
    let localFilePath = Bundle.main.url(forResource: "document_terms_of_use", withExtension: "html")
    let request = NSURLRequest(url: localFilePath!)
    webView.load(request as URLRequest)
}

Antwoord 12

snel 4.2 & 5:

let webView = WKWebView(frame: CGRect(x: 0, y: 0, width: 1024, height: 768))
let url = URL(string: PERS_Path)
webView?.navigationDelegate = self
webView?.uiDelegate = self
webView!.loadFileURL(url!, allowingReadAccessTo: url!)
self.view. addSubview(webView)

vergeet niet om deze WKNavigationDelegate, WKUIDelegate

toe te voegen


Antwoord 13

Dit werkte voor mij (Xcode 8, Swift 3)

@IBOutlet zwakke var webViewer: UIWebView!

override func viewDidLoad() {
    super.viewDidLoad()
    let localfilePath = Bundle.main.url(forResource: "homeInfo", withExtension: "html");
    let myRequest = NSURLRequest(url: localfilePath!);
    webViewer.loadRequest(myRequest as URLRequest);
    self.view.addSubview(webViewer)
}

Other episodes