перезагрузить UIWebView - PullRequest
       33

перезагрузить UIWebView

0 голосов
/ 01 июля 2011

Я использую UIWebView, как это в viewDidLoad:

webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 88, 320, 400)]; //  init and create the UIWebView
    webView.autoresizesSubviews = YES;
    webView.userInteractionEnabled = NO;
    webView.autoresizingMask=(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
    [webView  setDelegate:self];//set the web view delegates for the web view to be itself
    NSURLRequest *requestObject = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.apple.com"]];//Create a URL object & Set the URL to go to for your UIWebView
    [webView loadRequest:requestObject];//load the URL into the web view.
    [self.view addSubview:webView];//add the web view to the content view
    [webView release], webView = nil;

Когда я пытаюсь изменить страницу, я пытаюсь, что НО не работает:

[webView loadRequest: [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.facebook.com"]]];
[webView reload];

Код, приведенный выше, находится в действии кнопки TabBar.

** РЕДАКТИРОВАНИЕ: Когда я комментирую

[webView release], webView = nil;

, я вижу веб-сайт Apple, ноне фейсбук, когда я нажимаю кнопку!На яблочном сайте обновляется экран, а не в фейсбуке ... **

Сотня спасибо за помощь; -)

Ответы [ 5 ]

4 голосов
/ 01 июля 2011

Вы выпустили и установили свой webView на ноль. Таким образом, объект больше не существует. Вы вызываете loadRequest и перезагружаете объект nil, который ничего не будет делать.

Предполагая, что в вашем классе есть переменная экземпляра webView, удалите строку

[webView release], webView = nil;

и вместо этого поместите это в свой метод dealloc иначе, когда вы вызываете

[webView loadRequest: [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.facebook.com"]]];

тогда вы будете вызывать его для нулевого объекта, который ничего не будет делать.

2 голосов
/ 01 июля 2011

Где вы попробовали этот код?

[webView loadRequest: [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.facebook.com"]]];
[webView reload];

Вы уже выпустили веб-просмотр и сделали его Nil. Так что он не будет работать, если вы сделали это после загрузки www.apple.com.

[webView release], webView = nil;

Удалите две строки выше и попробуйте. Он должен работать. Надеюсь, что это поможет.

1 голос
/ 01 июля 2011

перезагрузка не нужна

- (void) webViewDidFinishLoad:(UIWebView *)webView
{
     [webView loadRequest: [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.facebook.com"]]];
}

это может помочь .. !!

1 голос
/ 01 июля 2011

Потенциальная проблема, которую я вижу, заключается в том, что вы устанавливаете значение webView равным nil после добавления его в качестве подпредставления, но перед повторной загрузкой:

 [webView loadRequest: [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.facebook.com"]]];
 [webView reload];

здесь webView is nil ... объектвсе еще существует (потому что он встроен в представление), но переменная больше на него не указывает, поэтому сообщения просто игнорируются.

0 голосов
/ 01 июля 2011

Читая ваш код, я предполагаю, что ваш webView объявлен как @property в заголовочном файле.Вы освобождаете этот объект после загрузки сайта Apple.Я думаю, что по этой причине он не загружает веб-сайт Facebook.

[webView release]; следует размещать только в методе - (void) dealloc.

Пожалуйста, дайте мне знать, если он работает!

...