web-dev-qa-db-de.com

Laden Sie die lokale HTML-Datei mit swift in UIWebView

Dieser macht mich heute früh verrückt. Ich möchte lokale HTML in eine Webansicht 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)
    }
}

Die HTML-Datei befindet sich im Stammordner meines Projekts, befindet sich jedoch in einer Gruppe. Der Webview ist für mich leer. Irgendwelche Ideen, was ist falsch? Ich bin auf Xcode 6.1 und führe dieses Beispiel auf meinem iPhone 6 aus.

65
Artjom Zabelin

Um URLs für Anwendungsressourcen abzurufen, verwenden Sie die URLForResource-Methode der NSBundle-Klasse.

Swift 2

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

Swift 3

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

Swift 3: typsicher

@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")
    }
}

Denken Sie daran: NS = Nicht schnell:]

20
iLandes
// 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)

}
17
Jupiter Cls

Swift 3 mit3Zeilen :)

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

Swift Version 2.1

in diesem Fall ist auch die Kodierung enthalten

// 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 {

}
8
Sruit A.Suk

Fügen Sie die lokale HTML-Datei in Ihr Projekt ein, und nennen Sie sie als home.html. Erstellen Sie dann das NSURLRequest-Objekt mithilfe des NSURL-Objekts. Nachdem die Anforderung an die Webansicht übergeben wurde, wird die angeforderte URL in die Webansicht geladen. Wenn Sie das Storyboard nicht verwenden, fügen Sie den uiwebview in der Ansichtscontrolleransicht wie im folgenden Code hinzu.

 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)
    }

Weitere Informationen finden Sie hier http://sourcefreeze.com/uiwebview-example-using-Swift-in-ios/

6

Das ist für mich gearbeitet:

@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 Settings mit Dictionary wurde in die Datei info.plist eingefügt. Außerdem wurde der Unterschlüssel Allow Arbitrary Loads für App Transport Security Settings mit dem Typ Boolean und dem Wert YES hinzugefügt.

Hier ist Tutorial.

BEARBEITET

Für Swift 3 (Xcode 8)

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

Sie können HTML-Zeichenfolge oder lokale HTML-Datei in UIWebView laden. 

HTML-String: 

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-Datei:

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

Details finden Sie hier: http://webindream.com/load-html-uiwebview-using-Swift/

3
farhad rubel

Für Swift 3 Verwenden Sie dies:

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
    {

    }
1
xevser

Das hat für mich funktioniert (Xcode 8, Swift 3)

@IBOutlet schwacher 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)
}
0
Diesel

Swift 4.2, Xcode 10.1, WKWebView lädt HTML aus der Datei. UIWebView ist veraltet.

Verwenden Sie in Apps, die unter iOS 8 oder höher ausgeführt werden, die WKWebView-Klasse anstelle von 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)
}
0
norbDEV

Swift 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)

vergiss nicht diesen WKNavigationDelegate, WKUIDelegate hinzuzufügen

0
Zouhair

Hier ist eine kurze Version für Swift 4

1) Import hinzufügen import WebKit

2) Fügen Sie Ihrem Projekt WebKit.framework hinzu

enter image description here

@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)
}
0
Aamir