1. ホーム
  2. ios

[解決済み] UIWebViewにローカルのhtmlファイルを読み込む方法

2022-04-24 07:23:57

質問

UIWebViewにhtmlファイルを読み込もうとしているのですが、うまくいきません。ここに段階があります:私は私のプロジェクトにhtml_filesというフォルダを持っています。そして、interface builderで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が真っ白になってしまいます。何か手助けがあれば幸いです。

解決方法は?

NSStringを使用して、以下のようにhtmlドキュメントを読み込むのが良いかと思われます。

オブジェクトC

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 を呼び出します。