Estou tentando carregar um arquivo html no meu UIWebView, mas ele não funciona. Aqui está o estágio: eu tenho uma pasta chamada html_files no meu projeto. Então, criei um webView no construtor de interface e designei uma saída para ele no viewController. Este é o código que estou usando para acrescentar o arquivo 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];
}
Isso não funcionará e o UIWebView está em branco. Eu apreciaria alguma ajuda.
ios
objective-c
iphone
cocoa-touch
uiwebview
madcoderz
fonte
fonte
EDIT 27/05/2016 -
loadRequest
expõe "uma vulnerabilidade universal de script entre sites". Certifique-se de possuir todos os ativos que você carrega. Se você carregar um script incorreto, ele poderá carregar o que quiser.Se você precisar de links relativos para trabalhar localmente, use este:
O pacote procurará todos os subdiretórios do projeto para encontrar
my.html
. (a estrutura de diretórios é achatada no momento da construção)Se
my.html
tiver a tag<img src="some.png">
, o webView será carregadosome.png
do seu projeto.fonte
com isso, você pode carregar o arquivo html que está no seu projeto Ativos (pacote configurável) no webView.
Pode ser que isso seja útil para você.
fonte
Eu acho que você precisa
allocate
e inicia o seuwebview
primeiro ::fonte
Um trecho de código simples de copiar e colar:
Nota:
Verifique se a associação ao destino do arquivo html está marcada, caso contrário, a seguinte exceção será lançada: -
A encerrar a aplicação devido a uma exceção não detectada
'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:isDirectory:]: nil string parameter'
fonte
Para Swift 3 e Swift 4:
fonte
fonte
Pode ser que seu arquivo HTML não suporte a codificação UTF-8, porque o mesmo código está funcionando para mim.
Ou você também pode estas linhas de código:
fonte
Aqui a maneira como o trabalho do arquivo HTML com o Jquery.
Você pode usar as solicitações para chamar o arquivo HTML no seu UIWebview
fonte
Verifique se "html_files" é um diretório no pacote principal do seu aplicativo, e não apenas um grupo no Xcode.
fonte
Uma nova maneira de fazer isso usando o swift. O UIWebView não existe mais e o WKWebView é a nova classe para carregar páginas da web, o que garante os recursos do Safari para a visualização da web.
fonte
fonte
Pode ser tarde, mas se o arquivo
pathForResource
for,nil
você deve adicioná-lo noBuild Phases > Copy Bundle Resources
.fonte
Aqui está o Swift 3:
fonte
fonte
No Swift 2.0, a resposta de @ user478681 pode ser assim:
fonte
Coloque todos os arquivos (html e recursos) em um diretório (para o meu "manual"). Em seguida, arraste e solte o diretório no XCode, sobre "Arquivos de suporte". Você deve verificar as opções "Copiar itens, se necessário" e "Criar referências de pastas". Em seguida, escreva um código simples:
Atenção
@"manual/index"
, manual é o nome do meu diretório !! É tudo !!!! Desculpe pelo meu inglês ruim ...==================================================== =======================
Olá desde Costa Rica. Coloque os arquivos (html e vários recursos) em um diretório (no caso, no manual do manual), luego, arraste e selecione no XCode, sobre "Supporting Files". Você deve selecionar as opções "Copiar itens, se necessário" e "Criar referências de pasta".
Presta atenção a
@"manual/index"
, manual es el nombre de mi directorio !!fonte
Quando o seu projeto cresce, você pode precisar de alguma estrutura, para que sua página HTML possa fazer referência a arquivos localizados em subpastas.
Supondo que você arraste sua
html_files
pasta para o Xcode e selecione a opção Criar referências de pasta , o código Swift a seguir garante queWKWebView
também seja compatível com a estrutura de pastas resultante:Isso significa que, se seu
sample.html
arquivo contiver uma<img src="subfolder/myimage.jpg">
tag, o arquivo de imagemmyimage.jpg
emsubfolder
também serão carregados e exibidos.Créditos: https://stackoverflow.com/a/8436281/4769344
fonte