是否可以恢复您上次在 UIwebView Xcode 5 中的位置

Posted

技术标签:

【中文标题】是否可以恢复您上次在 UIwebView Xcode 5 中的位置【英文标题】:Is it possible to resume where you last were in UIwebView Xcode 5 【发布时间】:2014-02-09 14:21:42 【问题描述】:

您好,我目前正在构建一个应用程序,其中我有多个不同站点的 webView。我的问题是,当您单击视图并在其上冲浪并切换到不同的视图并返回到第一个视图时,您是否可以恢复您所在的位置,而不必仅仅因为视图重新加载而重新开始?我现在的问题有点乱,但如果你能帮忙,那就太棒了!我正在使用常规的 UIvewView

NSURL *url = [NSURL URLWithString:@"https://www.mywebsite.com"];
NSURLRequest *requestURL = [NSURLRequest requestWithURL:url]; 
[webView loadRequest:requestURL];

【问题讨论】:

可能重复:How does ios 6 UIWebView state restoration work? 【参考方案1】:

好的,您可以保存您访问的最后一个网址并重新加载该页面吗?我认为您可以使用 NSUserDefaults 做到这一点。

【讨论】:

【参考方案2】:

如果您只是想在视图之间保存页面地址,则无需使用 NSUserDefaults 或状态恢复。 (如果您希望在应用程序使用之间保存数据,那么可以,您可以使用 NSUserDefaults 存储 url 字符串。)

要将值存储在您的应用委托中以供全局访问,请在您的应用委托的 .h 中声明该变量:

@property (nonatomic) NSUrl *currentUrl;

要访问类中的变量,请在 .m 中创建应用委托的实例:

#import "ViewController.h"
#import "AppDelegate.h"

@interface ViewController ()

@end

@implementation ViewController

AppDelegate *mainDelegate;

- (void)viewDidLoad

    mainDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

然后代替使用:

NSURL *url = [NSURL URLWithString:@"https://www.mywebsite.com"];
NSURLRequest *requestURL = [NSURLRequest requestWithURL:url]; 
[webView loadRequest:requestURL];

在打开webView 之前初始设置currentUrl 值:

mainDelegate.currentUrl = [NSURL URLWithString:@"https://www.mywebsite.com"];

在每个 webView 打开之前,将 NSUrlRequest 初始化为:

NSURLRequest *requestURL = [NSURLRequest requestWithURL:mainDelegate.currentUrl]; 

最后,要在关闭时存储每个webView 的当前地址,请使用:

mainDelegate.currentUrl = webView.request.URL;

【讨论】:

以上是关于是否可以恢复您上次在 UIwebView Xcode 5 中的位置的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Macgap 中调试 UIWebView?

在 UIWebView 中作为 Safari 打开网站?

在 UIWebView 中使用进度条?

在 UIWebView 中恢复位置

UIWebView 是不是泄漏内存?

如何从UIWebView下载文件并再次打开