0

モーダルセグエで接続された2つのビューコントローラーがあります。宛先コントローラーにもUIWebViewがあります。

ドキュメントを読んで、Webviewコントローラーの却下を担当する最初のコントローラーを選択したいと思います。そうするための私のアクションは、Webviewデリゲートメソッドになります。

私はこれを試しています:

最初のコントローラー:

@interface ABISignInViewController : UIViewController <UIWebViewDelegate>
...

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
...
  } else if ([[segue identifier] isEqualToString:@"showWebViewForSignUp"]) {
    ABIWebBrowserViewController *webViewController = (ABIWebBrowserViewController *)segue.destinationViewController;
    [webViewController.webView setDelegate:self];
    [webViewController setUrlString:@"https://myurl"];
  }
}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
  NSLog(@"%@", request);
  return YES;
}

2番目のコントローラーが起動し、要求されたURLのロードを開始します。

- (void)viewDidAppear:(BOOL)animated {
  NSURL *url = [NSURL URLWithString:self.urlString];
  NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
  [self.webView loadRequest:requestObj];
}

ただし、最初のコントローラーのデリゲートメソッドが呼び出されることはありません。方向性はありますか?

4

1 に答える 1

0

URL を NSString または NSURL として渡してから、WebView を持つ ViewController にデリゲート メソッドを処理させてみませんか?

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
...
  } else if ([[segue identifier] isEqualToString:@"showWebViewForSignUp"]) {
    ABIWebBrowserViewController *webViewController = (ABIWebBrowserViewController *)segue.destinationViewController;
    webViewController.urlString = @"https://myurl";
  }
}

WebViewViewController:

- (void)viewDidAppear:(BOOL)animated {
  NSURL *url = [NSURL URLWithString:self.urlString];
  NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
  [self.webView loadRequest:requestObj];
}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
  NSLog(@"%@", request);
  return YES;
}
于 2013-01-16T22:26:21.000 に答える