Передача NSURLRequest / NSURL другому UIViewController приводит к (null) - PullRequest
0 голосов
/ 06 сентября 2011

У меня есть два ViewController, которые оба являются UIWebViewDelegates, и в одном у меня есть UIWebview, который в основном перечисляет числовые ссылки. Первый ViewController определил этот метод:

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
    if (inType == UIWebViewNavigationTypeLinkClicked) {
        BrowserViewController *browserViewController = [[BrowserViewController alloc] init];
        [self.navigationController pushViewController:browserViewController animated:YES];
        browserViewController.URL = [inRequest URL];
        [browserViewController release];
        return NO;
    }
    return YES;
}

Но когда я на самом деле NSLog свойства URL в viewDidLoad во втором контроллере, я всегда получаю (null) для NSURL. Кроме того, если я делаю NSLog сразу после нажатия второго контроллера в коде выше, он фактически появляется после NSLog в методе viewDidLoad второго контроллера.

У кого-нибудь есть идеи, почему это происходит?

1 Ответ

0 голосов
/ 06 сентября 2011

Вы не отправляете сообщение setURL второму контроллеру до тех пор, пока оно не будет завершено и не вернется к первому.Вам нужно сделать это в другом порядке:

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
 if (inType == UIWebViewNavigationTypeLinkClicked) {
    BrowserViewController *browserViewController = [[BrowserViewController alloc] init];
    browserViewController.URL = [inRequest URL];
    [self.navigationController pushViewController:browserViewController animated:YES];
    [browserViewController release];
    return NO;
  }
return YES;
}
...