Dieser macht mich heute früh verrückt. Ich möchte etwas lokales 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. Die Webansicht 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.
Antworten:
Zum Abrufen von URLs für Anwendungsressourcen, sollten Sie verwenden
URLForResource
Methode derNSBundle
Klasse.Swift 2
let url = NSBundle.mainBundle().URLForResource("privacy", withExtension:"html")
Swift 3
let url = Bundle.main.url(forResource: "privacy", withExtension: "html")
quelle
Swift 3: Typ sicher
@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 = Not Swift:]
quelle
// 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) }
quelle
Swift 3 mit 3 Zeilen :)
if let url = Bundle.main.url(forResource: "privacy", withExtension: "html") { webview.loadRequest(URLRequest(url: url)) }
quelle
Schnelle Version 2.1
Dieser Fall umfasst auch die Codierung
// 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 { }
quelle
Fügen Sie die lokale HTML-Datei zu Ihrem Projekt hinzu und benennen Sie diese Datei als home.html. Erstellen Sie dann die NSURLRequest mit dem NSURL-Objekt. Nachdem Sie die Anforderung an die Webansicht übergeben haben, wird die angeforderte URL in die Webansicht geladen. Wenn Sie kein Storyboard verwenden, fügen Sie die uiwebview wie im folgenden Code in die View-Controller-Ansicht ein.
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 unter http://sourcefreeze.com/uiwebview-example-using-swift-in-ios/.
quelle
Das funktioniert bei mir:
@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")!))) }
Hinzugefügt
App Transport Security Settings
mitDictionary
Typ in info.plist Datei. Außerdem wurde ein UnterschlüsselAllow Arbitrary Loads
für die App Transport-Sicherheitseinstellungen mit TypBoolean
und Wert hinzugefügtYES
.Hier ist ein Tutorial.
BEARBEITET
Für Swift 3 (Xcode 8)
mWebView.loadRequest(URLRequest(url: URL(fileURLWithPath: Bundle.main.path(forResource: "test/index", ofType: "html")!)))
quelle
Sie können eine HTML-Zeichenfolge oder eine lokale HTML-Datei in UIWebView laden.
HTML-Zeichenfolge:
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/
quelle
Hier ist eine kurze Version für Swift 4
1) Import hinzufügen
import WebKit
2) Fügen Sie
WebKit.framework
Ihr Projekt hinzu@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) }
quelle
Für schnelle 3 Verwenden Sie diese:
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 { }
quelle
Swift 4.2, Xcode 10.1, WKWebView laden HTML aus der Datei. UIWebView ist veraltet.
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) }
quelle
schnell 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, dies hinzuzufügen
WKNavigationDelegate, WKUIDelegate
quelle
Das hat bei mir funktioniert (Xcode 8, Swift 3)
@IBOutlet schwach 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) }
quelle