2013-01-16 52 views
0

我有两个视图控制器通过模态连接。目的地控制器也有一个UIWebView。为segue控制器设置webview代理?

阅读文档我想选择第一个控制器负责解雇web视图控制器,我这样做的动作是使用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; 
} 

第二控制火灾,并开始装载请求的URL:

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

然而,在第一个委托方法控制器从未被调用。 任何方向?

回答

0

为什么不将URL作为NSString或NSURL传递,然后让ViewController和WebView处理委托方法?

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

的WebView视图控制器:

- (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; 
} 
+0

,因为我想第一个控制器来负责关闭模式web视图控制器,基于请求的URL,因此控制器也可重复使用。看到这里:https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html“消除提出的视图控制器” – kain

+0

然后,你会使用协议和委托模式来做到这一点。看到这个SO回答:http://stackoverflow.com/questions/8905961/modal-view-controller-not-calling-presenting-view-controllers-dismissmodalviewc/8910988#8910988 –

相关问题