我有一个UIWebView
类,在加载时会添加到每个故事板中,但是当我将所需的页面传递给父类ViewController
时,它只显示来自第一个页面的文件在每个不同的页面/ viewController上它是相同的,即使我在每个上设置不同。
是否以某种方式缓存此页面,如果是这样,我怎样才能每次都有一个干净的UIWebview
?
我的UIwebview类m文件(ContentView.m):
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
NSString *urlpath = [[NSBundle mainBundle] pathForResource:pageToDisplay ofType:@"html" inDirectory:@"pageContent"];
NSURL *url=[[NSURL alloc] initFileURLWithPath:urlpath];
NSURLRequest *request=[NSURLRequest requestWithURL:url];
[self loadRequest:request];
}
return self;
}
我的父视图使用以下变量pageToDisplay
传递请求的页面:
父视图m文件:
#import "ContentView.h"
- (void)viewDidLoad {
ContentView *dispalyPageContent = [[ContentView alloc] init];
[dispalyPageContent setPageToDisplay:@"THEpg1"];
[self.view addSubview:dispalyPageContent];
//--
[super viewDidLoad];
}
对于每个其他父视图,代码是相同的,但[displayPageContent setPageToDisplay:@"THEpg1"];
应该更改我想要的页面,例如下一个视图是[displayPageContent setPageToDisplay:@“THEpg2”];
是否可以清除此项并每次加载新的请求?
答案 0 :(得分:1)
这是因为当您在ContentView *dispalyPageContent = [[ContentView alloc] init];
中致电viewDidLoad
时,请先执行以下操作:
NSString *urlpath = [[NSBundle mainBundle] pathForResource:pageToDisplay ofType:@"html" inDirectory:@"pageContent"];
在pathForResource:初始化时的pageToDisplay是一些垃圾。
然后,当您致电[dispalyPageContent setPageToDisplay:@"smth"]
时,它没有任何变化,因为您的课程ContentView
已经被PageToDisplay
(另外,您致电[[ContentView alloc] init];
并且在您的代码中initWithFrame:...
类的对象只有ContentView
您可以通过以下方式解决此问题: 1)在您的ContentView.m
中 - (id)initWithFrame:(CGRect)frame pageToDisp:(NSString *)pageToDisp {
self = [super initWithFrame:frame];
if (self) {
NSString *urlpath = [[NSBundle mainBundle] pathForResource:pageToDisp ofType:@"html" inDirectory:@"pageContent"];
NSURL *url=[[NSURL alloc] initFileURLWithPath:urlpath];
NSURLRequest *request=[NSURLRequest requestWithURL:url];
[self loadRequest:request];
}
return self;
}
2)在您的ContentView.h中:
- (id)initWithFrame:(CGRect)frame pageToDisp:(NSString *)pageToDisp
3)然后,在viewDidLoad中:
- (void)viewDidLoad {
ContentView *dispalyPageContent = [[ContentView alloc] initWithFrame:someFrame pageToDisp:@"THEpg1"];
[self.view addSubview:dispalyPageContent];
//--
[super viewDidLoad];
}