iOS:NSURLRequest每次在不同的故事板上返回相同的页面

时间:2012-10-17 22:42:37

标签: objective-c uiwebview ios6 xcode4.5

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

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

1 个答案:

答案 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];
    }