在我的iPhone(iOS 5/6)应用程序的一部分中,我有一系列按钮打开一个URL(目前通过移动Safari的URL方案)在我的APP中。我不希望制作单独的视图控制器,每个视图控制器在每个按钮按下时都充当模态。
我想制作一个充当应用程序范围的Web视图的.xib文件,而不是拥有5个不必要的视图控制器。 IE:当用户按下按钮时,在该新视图中打开与该按钮对应的URL(假设它叫做WebViewController)。
使用伪代码或只是解释,你能解释一下我该怎么做吗?这个具体问题的在线/书籍很少。
答案 0 :(得分:1)
您基本上可以有一个viewController
和多个按钮,然后将这些按钮与用于打开相应URL
的操作相关联,您可以使用其他viewController
与UIWebView
连接作为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
并将其加载到您的网络视图中。