1

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

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

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

4

2 回答 2

1

您基本上可以有一个viewController和多个按钮,然后将这些按钮与它们的操作连接起来以打开相应的按钮URL,您可以使用其他viewController连接UIWebView为 iboutlet 和 aUIButton来关闭此 viewController 您必须在第二个 viewController 中为 webview实现UIWebViewDelegate

第一视图控制器.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{


}
于 2013-03-03T01:28:51.607 回答
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
}

关于使用传递的 url 创建的加载-viewDidLoad方法并将其加载到您的 web 视图中。MyWebControllerURLRequest

于 2013-03-03T01:33:39.007 回答