1

私のiPhone(iOS 5/6)アプリの一部には、アプリ内でURLを開く(現在はモバイルSafariへのURLスキームを介して)一連のボタンがあります。ボタンを押すたびにモーダルとして機能する個別のビューコントローラを作成したくありません。

5つの不要なViewControllerを用意するのではなく、アプリケーション全体のWebビューとして機能する.xibファイルを作成したいと思います。IE:ユーザーがボタンを押すと、そのボタンに対応するURLがこの新しいビューで開きます(たとえば、WebViewControllerと呼ばれます)。

擬似コードまたは単なる説明で、これをどのように行うべきか説明していただけますか?この特定の質問に関するオンライン/書籍はほとんどありません。

4

2 に答える 2

1

基本的に1つviewControllerまたは複数のボタンを用意し、それらのボタンを対応するアクションを開くためのアクションに接続することができます.ioutletとして接続されたURL他のものを使用viewControllerし、このviewControllerを閉じるには、この2番目のviewControllerでwebviewのUIWebViewDelegateを実装する必要がありますUIWebViewUIButton

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{


}
于 2013-03-03T01:28:51.607 に答える
1

UIWebView アウトレットが接続された単一の View Controller を作成する必要があります。そのビュー コントローラーを 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 を使用して作成された をロードし、それを Web ビューにロードし-viewDidLoadますMyWebControllerURLRequest

于 2013-03-03T01:33:39.007 に答える