使用上次访问的页面加载UIWebview

时间:2014-04-16 08:45:45

标签: ios uiwebview

我正在开发一个应用程序,我需要在其中加载最近访问过的网页的UIWebview。 我将最后一页网址存储在:

  

self.currentURL = [self.webView   stringByEvaluatingJavaScriptFromString:@ “window.location.href”];

工作正常。

但问题是,我不知道如何保存这个值,这样一旦我退出UIWebview并重新启动它,这个值就不是零。

所以,我尝试将它存储在NSUserDefaults中,如下所示:

  

[[NSUserDefaults standardUserDefaults] setObject:self.currentURL   forKey:@ “CURRENTURL”];

这会存储值,我可以在重新启动UIWebview时访问它。

这就是我启动网络视图的方式:

  

self.currentURL = [[NSUserDefaults standardUserDefaults]   stringForKey:@ “CURRENTURL”];

if (self.currentURL) {
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.currentURL]]];
}
else {
    [webView loadRequest:[NSURLRequest requestWithURL:url]];
}

工作正常。

现在我遇到的问题是,

我有我的应用程序的主屏幕,其中有几个按钮可以打开各种链接(不同的UIwebview页面)。我想只有在页面被导航并按下相同的按钮时才打开带有最后访问页面的UIWebview打开UIWebView。如果单击任何其他按钮,则不应打开上次访问的页面,而是应打开为该按钮编码的新链接。

有谁知道如何实现这种行为?

P.S:我没有在我的应用程序中使用XIB。

2 个答案:

答案 0 :(得分:0)

我建议您使用NSURLCache存储缓存,然后根据请求的URL加载缓存。

答案 1 :(得分:0)

不是那么难。假设你有4个按钮。

NSUserDeafults上分别跟踪每个按钮。

像这样:

[[NSUserDefaults standardUserDefaults] setObject:self.currentURL forKey:@"currentURLForButton1"];
[[NSUserDefaults standardUserDefaults] setObject:self.currentURL forKey:@"currentURLForButton2"];
[[NSUserDefaults standardUserDefaults] setObject:self.currentURL forKey:@"currentURLForButton3"];
[[NSUserDefaults standardUserDefaults] setObject:self.currentURL forKey:@"currentURLForButton4"];

在按钮1中点击操作:

self.currentURL = [[NSUserDefaults standardUserDefaults] stringForKey:@"currentURLForButton1"];

if (self.currentURL) {
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.currentURL]]];
}
else {
    [webView loadRequest:[NSURLRequest requestWithURL:url]];
}

...

...

在按钮4中单击操作:

self.currentURL = [[NSUserDefaults standardUserDefaults] stringForKey:@"currentURLForButton4"];

if (self.currentURL) {
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.currentURL]]];
}
else {
    [webView loadRequest:[NSURLRequest requestWithURL:url]];
}

我刚刚描述了一个简单而漫长的过程。您可以使用单个阵列完成此操作。希望这有助于.. :))