我正在开发一个使用UIWebView显示其帮助文件的应用。 webView存在于它自己的视图中,DocViewController ......当它被称为

- (void)viewDidLoad {

方法使用

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:   [[NSBundle mainBundle] pathForResource:docPage ofType:@"html"]isDirectory:NO]]];

加载正确的文档页面。但是,一旦加载了第一页,视图就会变为静态,并且当docPage更改并切换视图时,不会加载新页面。有没有办法清除webView,以便在请求时加载新页面?

编辑:结果 第一个答案让我感到困惑。正如下面的例程一样。只是它只能一次。在第一次加载视图后,当再次切换此视图并且请求的html页面不同时,视图不会更改。视图始终显示请求的第一个html页面,不会加载新请求。

 - (void)viewDidLoad {

     docPage = [NSString stringWithFormat: @"%d", hexpage];

     [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[NSBundle mainBundle] pathForResource:docPage ofType:@"html"]isDirectory:NO]]];

 }
有帮助吗?

解决方案

除非视图已发布且需要重新加载,否则

viewDidLoad 仅被调用一次。这通常仅在视图控制器收到低内存警告时发生。尝试将该代码放在 viewWillAppear:中,而不是 viewDidLoad ,每次视图显示在屏幕上时都会调用该代码。

其他提示

尝试使用

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL

将NSURL对象传递给包含HTML作为baseURL的dir,并使用类似

的方式加载HTML字符串
NSString *path = [[NSBundle mainBundle] pathForResource:@"myfile" 
                                                 ofType:@"html"];
NSString *html = [NSString stringWithContentsOfFile:path 
                                           encoding:NSUTF8StringEncoding
                                              error:nil];

编辑: 此外,请确保您的超链接没有尝试在新窗口中打开,例如target =" _blank",您的webview将无法打开那些

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top