0

我有一个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"];

是否可以清除它并每次加载新的请求?

4

1 回答 1

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];
    }
于 2012-10-17T23:34:39.890 回答