iphone - كيفية تحميل ملف html المحلي في UIWebView




objective-c cocoa-touch (12)

أعتقد أنك بحاجة إلى allocate وبدء webview أولاً:

- (void)viewDidLoad
{
    NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html" inDirectory:@"html_files"];
    NSData *htmlData = [NSData dataWithContentsOfFile:htmlFile];
    webView = [[UIWebView alloc] init];
    [webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];

    [super viewDidLoad];
}

أحاول تحميل ملف html في UIWebView الخاص بي ولكنه لن يعمل. ها هي المرحلة: لدي مجلد اسمه html_files في مشروعي. ثم قمت بإنشاء webView في واجهة بناء وتعيين منفذ له في viewController. هذه هي الكود الذي أستخدمه لإلحاق ملف html:

-(void)viewDidLoad
{
    NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html" inDirectory:@"html_files"];
    NSData *htmlData = [NSData dataWithContentsOfFile:htmlFile];
    [webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];
    [super viewDidLoad];
}

لن يعمل ذلك ويكون UIWebView فارغًا. أنا أقدر بعض المساعدة.


بالنسبة لـ Swift 3 و Swift 4:

let htmlFile = Bundle.main.path(forResource: "name_resource", ofType: "html")
let html = try! String(contentsOfFile: htmlFile!, encoding: String.Encoding.utf8)
self.webView.loadHTMLString(html, baseURL: nil)

ربما من الأفضل استخدام NSString وتحميل مستند HTML كما يلي:

ج موضوعية

NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html"];
NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
[webView loadHTMLString:htmlString baseURL: [[NSBundle mainBundle] bundleURL]];

سريع

let htmlFile = NSBundle.mainBundle().pathForResource("fileName", ofType: "html")
let html = try? String(contentsOfFile: htmlFile!, encoding: NSUTF8StringEncoding)
webView.loadHTMLString(html!, baseURL: nil) 

يحتوي Swift 3 على بعض التغييرات:

let htmlFile = Bundle.main.path(forResource: "intro", ofType: "html")
let html = try? String(contentsOfFile: htmlFile!, encoding: String.Encoding.utf8)
webView.loadHTMLString(html!, baseURL: nil)

هل جربت؟

تحقق أيضًا من العثور على المورد بواسطة pathForResource:ofType:inDirectory call.


طريقة جديدة للقيام بذلك باستخدام سريع. لم يعد UIWebView أكثر و WKWebView هو فئة جديدة لتحميل صفحات الويب ، مما يضمن ميزات Safari إلى عرض الويب.

    import WebKit

    let preferences = WKPreferences()
    preferences.javaScriptCanOpenWindowsAutomatically = false

    let configuration = WKWebViewConfiguration()
    configuration.preferences = preferences

    let webView = WKWebView(frame: self.view.bounds, configuration: configuration)
    let request = NSURLRequest(URL: NSURL(string: "http://nshipster.com"))
    webView.loadRequest(request)

قد يكون ملف HTML الخاص بك لا يدعم ترميز UTF-8 ، لأن نفس الرمز يعمل لي.

أو يمكنك أيضًا الحصول على سطر الكود هذا:

NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"Notes For Apple" ofType:@"htm" inDirectory:nil];
NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
[WebView loadHTMLString:htmlString baseURL:nil];

من خلال هذا يمكنك تحميل ملف html الذي هو في الأصول الخاصة بك مشروع (حزمة) ل webView.

 UIWebView *web = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
    [web loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] 
                                pathForResource:@"test" ofType:@"html"]isDirectory:NO]]];

قد يكون هذا مفيد لك.


وإليك سويفت 3:

    if let htmlFile = Bundle.main.path(forResource: "aa", ofType: "html"){
        do{
            let htmlString = try NSString(contentsOfFile: htmlFile, encoding:String.Encoding.utf8.rawValue )
            messageWebView.loadHTMLString(htmlString as String, baseURL: nil)
        }
        catch _ {
        }
    }

وضع جميع الملفات (أتش تي أم أل والموارد) في دليل ("دليل" بلدي). بعد ذلك ، قم بسحب وإفلات الدليل إلى XCode ، فوق "Supporting Files". يجب عليك التحقق من الخيارات "نسخ العناصر إذا لزم الأمر" و "إنشاء مراجع المجلد". بعد ذلك ، اكتب رمزًا بسيطًا:

NSURL *url = [[NSBundle mainBundle] URLForResource:@"manual/index" withExtension:@"html"];
[myWebView loadRequest:[NSURLRequest requestWithURL:url]];

الانتباه إلى @"manual/index" ، دليل هو اسم بلدي الدليل! كل شيء! اسف على سوء لغتي الانجليزية...

================================================== =====================

هولا ديس كوستاريكا. Ponga los archivos (html y demás recursos) en un directorio (en mi caso lo llamé manual)، luego، arrastre y suelte en XCode، sobre "Supporting Files". Usted debe seleccionar las opciones "Copy Items if needed" y "Create folder references".

NSURL *url = [[NSBundle mainBundle] URLForResource:@"manual/index" withExtension:@"html"];
[myWebView loadRequest:[NSURLRequest requestWithURL:url]];

Presta atención a @"manual/index" ، manual es el nombre de mi directorio !!


مقتطف رمز نسخة - لصق بسيط:

-(void)LoadLocalHtmlFile:(NSString *)fileName onWebVu:(UIWebView*)webVu
{
    [webVu loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:fileName ofType:@"html"]isDirectory:NO]]];
}

ملحوظة:

تأكد من تحديد عضوية الهدف في ملف html وإلا فسيتم طرح الاستثناء التالي:

إنهاء التطبيق بسبب استثناء غير معلن

'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:isDirectory:]: nil string parameter'


Swift iOS:

 // get server url from the plist directory
        var htmlFile = NSBundle.mainBundle().pathForResource("animation_bg", ofType: "html")!
        var htmlString = NSString(contentsOfFile: htmlFile, encoding: NSUTF8StringEncoding, error: nil)
        self.webView.loadHTMLString(htmlString, baseURL: nil)

[[NSBundle mainBundle] pathForResource:@"marqueeMusic" ofType:@"html"];

قد يكون متأخراً ولكن إذا كان الملف من pathForResource هو nil فيجب إضافته في Build Phases > Copy Bundle Resources .


if let htmlFile = NSBundle.mainBundle().pathForResource("aa", ofType: "html"){
    do{
        let htmlString = try NSString(contentsOfFile: htmlFile, encoding:NSUTF8StringEncoding )
        webView.loadHTMLString(htmlString as String, baseURL: nil)
    }
    catch _ {
    }
}




uiwebview