我正在尝试将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是空白的 . 我很感激一些帮助 .
17 回答
可能最好使用NSString并加载html文件,如下所示:
Objective-C
Swift
Swift 3 has few changes:
你试过了吗?
同时检查
pathForResource:ofType:inDirectory
调用是否找到了资源 .EDIT 2016-05-27 - loadRequest exposes "a universal Cross-Site Scripting vulnerability."确保您拥有加载的每个资产 . 如果加载坏脚本,它可以加载它想要的任何东西 .
如果您需要相关链接在本地工作,请使用以下命令:
捆绑包将搜索项目的所有子目录以查找
my.html
. (目录结构在构建时变平)如果
my.html
的标签为<img src="some.png">
,则webView将从您的项目中加载some.png
.通过这个,您可以加载项目Assets(bundle)中的html文件到webView .
这可能对你有用 .
我想你需要
allocate
并首先启动你的webview
::A Simple Copy-Paste code snippet:
Note:
确保检查html文件的Target成员资格,否则将抛出异常: -
由于未捕获的异常而终止应用程序
'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:isDirectory:]: nil string parameter'
对于Swift 3和Swift 4:
可能是你的HTML文件不支持UTF-8编码,因为相同的代码对我有用 .
或者你也可以这些代码:
这里是使用Jquery处理HTML文件的方式 .
您可以使用任一请求在UIWebview中调用HTML文件
确保“html_files”是应用程序主包中的目录,而不仅仅是Xcode中的一个组 .
使用swift执行此操作的新方法 . UIWebView已不复存在,WKWebView是加载网页的新类,可确保Safari功能进入Web视图 .
可能会迟到但如果来自
pathForResource
的文件是nil
,则应将其添加到Build Phases > Copy Bundle Resources
中 .这是Swift 3:
在Swift 2.0中,@ user478681的答案可能如下所示:
将所有文件(html和资源)放在一个目录中(对于我的“手册”) . 接下来,通过“Supporting Files”将目录拖放到XCode . 您应该选中“如果需要,复制项目”和“创建文件夹引用”选项 . 接下来,编写一个简单的代码:
注意
@"manual/index"
, manual 是我的目录的名称!!这都是!!!!对不起,我的英语不好...================================================== =====================
Hola desde哥斯达黎加 . Ponga los archivos(htmlydemásreecursos)en un directorio(en mi casolollamémanual),luego,arrastre y suelte en XCode,sobre“Supporting Files” . Usted debe seleccionar las opciones“如果需要,复制项目”y“创建文件夹引用” .
Prestaatencióna
@"manual/index"
, manual es el nombre de mi directorio !!