从另一个视图将请求加载到Web视图中

时间:2013-03-03 01:16:07

标签: ios objective-c

在我的iPhone(iOS 5/6)应用程序的一部分中,我有一系列按钮打开一个URL(目前通过移动Safari的URL方案)在我的APP中。我不希望制作单独的视图控制器,每个视图控制器在每个按钮按下时都充当模态。

我想制作一个充当应用程序范围的Web视图的.xib文件,而不是拥有5个不必要的视图控制器。 IE:当用户按下按钮时,在该新视图中打开与该按钮对应的URL(假设它叫做WebViewController)。

使用伪代码或只是解释,你能解释一下我该怎么做吗?这个具体问题的在线/书籍很少。

2 个答案:

答案 0 :(得分:1)

您基本上可以有一个viewController和多个按钮,然后将这些按钮与用于打开相应URL的操作相关联,您可以使用其他viewControllerUIWebView连接作为iboutlet和UIButton解雇这个viewController你必须在第二个viewController中为webview实现UIWebViewDelegate

<强> FirstViewController.m

-(IBAction)button1Clicked:(id)sender{
    self.myWebController=[[MyWebViewController alloc]initWithNibName:@"MyWebViewController" bundle:nil];
    [self.myWebController setWebViewUL:@"http://www.google.com"];

    [self presentViewController:self.myWebController animated:YES completion:nil];
}
-(IBAction)button2Clicked:(id)sender{
    self.myWebController=[[MyWebViewController alloc]initWithNibName:@"MyWebViewController" bundle:nil];
    [self.myWebController setWebViewUL:@"http://www.apple.com"];

    [self presentViewController:self.myWebController animated:YES completion:nil];
}
-(IBAction)button3Clicked:(id)sender{
    self.myWebController=[[MyWebViewController alloc]initWithNibName:@"MyWebViewController" bundle:nil];
    [self.myWebController setWebViewUL:@"http://www.yahoo.com"];

    [self presentViewController:self.myWebController animated:YES completion:nil];
}

<强> MyWebViewController.m

@synthesize myWebView;
@synthesize strURL;


-(void)setWebViewUL:(NSString*)urlstr{

    self.strURL=urlstr;
}

- (void)viewDidLoad
{
    [self loadURLinWebView:self.strURL];

    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

-(void)loadURLinWebView:(NSString*)urlStr {

    NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:urlStr] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:30.0f];
    [myWebView loadRequest:request];

}

-(IBAction)buttonDismisClicked:(id)sender{


    [self dismissViewControllerAnimated:YES completion:nil];
}


// delegate methods     

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{

}
-(void)webViewDidFinishLoad:(UIWebView *)webView{

}

-(void)webViewDidStartLoad:(UIWebView *)webView{


}

答案 1 :(得分:1)

您必须创建一个视图控制器,它将附加一个UIWebView插座。创建一个方法,使用URL参数初始化该视图控制器并将其加载到UIWebView中。是吗?

一些伪代码也是如此,因为你提出了它:

// SomeControllerWithinTheApp.m
- (IBAction)myWebsiteLinkTapped {
  MyWebController *viewController = [[MyWebController alloc] initWithURL:kWebsiteURL];
  // show it modally or push, up to you
}

// SomeOtherControllerWithinTheApp.m
- (IBAction)someLinkButtonTapped {
  MyWebController *viewController = [[MyWebController alloc] initWithURL:kSomeOtherURL];
  // show it
}

-viewDidLoad方法MyWebController上加载使用传递的网址创建的URLRequest并将其加载到您的网络视图中。