Бросить запрос веб-просмотра на другой веб-просмотр - PullRequest
0 голосов
/ 20 апреля 2009

У меня есть UIViewController с UIWebView (webview1) в нем. Веб-просмотр - это всего лишь несколько строк текста, но в нем есть ссылка. Вместо того, чтобы открывать ссылку, которая идет на внешний сайт, в этом крошечном пространстве, я бы хотел отправить ее на webview2, которая будет в полноэкранном режиме. Цель - сохранить веб-запросы в моем приложении, а не в Safari. Вместо того, чтобы создавать еще один контроллер для webview2, я бы хотел использовать контроллер webview1.

В контроллере Webview1Controller я делаю это в webViewLoad:

webview1.delegate = self;

Здесь я передаю веб-запрос webview2, который работает нормально:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

myapp *delegate = [[UIApplication sharedApplication] delegate];
Webview1Controller *webview1Controller = [[Webview1Controller alloc] initWithNibName:@"webview2" bundle:nil];
//self.view = webview2;'
[delegate.navigationController pushViewController: webview1Controller animated:YES];
[webview1Controller.webview2 loadRequest:request];
[webview1Controller release];
return YES;
}

В Интерфейсном Разработчике у меня есть класс владельца файла webview2.xib, установленный в Webview1Controller. Это «вид» и webview2outlet подключены. У меня есть IBOutlet в Webview1Controller с именем webview2outlet.

Когда я возвращаюсь к webview1, он также загружает тот же запрос. Есть ли способ остановить загрузку webview1? Если я верну NO в указанном выше методе, webview1 не будет отображать мой контент.

Одним из решений является перезагрузка контента webview1 в viewWillAppear, который работает. Но есть ли лучший способ?

Ответы [ 2 ]

1 голос
/ 20 апреля 2009

Возврат NO из метода делегата.

Что касается вашего комментария, я думаю, что вы хотите сделать, чтобы ваш метод делегата проверил, какой веб-просмотр вызывает ваш контроллер:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
    if (webView == webview1) {
        Webview1Controller *webview1Controller = [[Webview1Controller alloc] initWithNibName:@"webview2" bundle:nil];
        [self.navigationController pushViewController:webview1Controller animated:YES];
        [webview1Controller.webview2 loadRequest:request];
        [webview1Controller release];
        return NO;
    }
    else {
        return YES;
    }
}

(Обратите внимание также, что UIViewController имеет свойство navigationController, поэтому вы можете использовать его вместо получения через своего делегата приложения).

0 голосов
/ 20 апреля 2009

Что произойдет, если вы загрузите копию запроса вместо оригинала и вернете НЕТ?

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

    myapp *delegate = [[UIApplication sharedApplication] delegate];
    Webview1Controller *webview1Controller = [[Webview1Controller alloc] initWithNibName:@"webview2" bundle:nil];
    //self.view = webview2;'
    [delegate.navigationController pushViewController: webview1Controller animated:YES];
    [webview1Controller.webview2 loadRequest:[[request copy] autorelease]];
    [webview1Controller release];
    return NO;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...