WebView не загружает URL, переданный из другого класса

#objective-c #xcode #cocoa #class #webview

#objective-c #xcode #cocoa #класс #webview

Вопрос:

У меня есть два класса (AppDelegate и WebViewController) с двумя файлами nib: один — главное окно, а другой — окно с WebView. В AppDelegate у меня есть этот код для отображения окна WebViewController при запуске:

 - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    self.iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];
    [[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveNotification:) name:@"com.apple.iTunes.playerInfo" object:nil];
    [self.lyricsTextView setAlignment:NSCenterTextAlignment];
    [self refreshLyrics];

    // Here I show my WebViewController Window
    newWebViewController = [[WebViewController alloc] init];
    [NSBundle loadNibNamed:@"WebViewWindow" owner:newWebViewController];
}
  

Мой WebView правильно инициализируется. В WebViewController у меня есть этот код:

 - (void)goToURLFromExternal:(NSString *)urlToGo {
    NSLog(@"%@", urlToGo);

    NSURL *newURL = [[NSURL alloc] initWithString:urlToGo];
    NSLog(@"%@", newURL);

    NSURLRequest *newRequest = [[NSURLRequest alloc] initWithURL:newURL];
    NSLog(@"%@", newRequest);

    [self.myWebView.mainFrame loadRequest:newRequest];
}
  

Но когда я использую from AppDelegate этот код:

 [newWebViewController goToURLFromExternal:[[urlArray objectAtIndex:0] stringValue]];
  

мой WebView ничего не делает. Загруженная страница остается той же.
Здесь вывод консоли для (void)goToURLFromExternal:(NSString *)urlToGo:

 2011-10-04 16:55:54.838 iTunes Lyrics[25379:707] http://lyrics.wikia.com/Cake:Dime

2011-10-04 16:55:54.838 iTunes Lyrics[25379:707] http://lyrics.wikia.com/Cake:Dime

2011-10-04 16:55:54.838 iTunes Lyrics[25379:707] <NSURLRequest http://lyrics.wikia.com/Cake:Dime>
  

У кого-нибудь есть идеи о том, как решить мою проблему?
Большое вам спасибо!!!

Комментарии:

1. Рискуя показаться снисходительным, не могли бы вы немного подробнее задокументировать свой класс WebViewController. Кроме того, вы могли бы добавить некоторые проверки, чтобы убедиться, что myWebView не равен нулю — если бы это было так, ваш loadRequest не имел бы никакого эффекта.

2. Спасибо за ваш ответ, Морис Келли, моя проблема решена путем установки свойства класса владельца файла в WebViewController вместо добавления нового NSObject, а затем установки его свойства класса в WebViewController. Еще раз спасибо!

Ответ №1:

Связали ли вы свой класс WebViewController с WebViewWindow.nib?

В файле WebViewWindow.nib установите для свойства класса владельца файла значение WebViewController.

Комментарии:

1. Большое вам спасибо! В WebViewWindow.nib я добавил NSObject и установил для его свойства класса значение WebViewController. Теперь с вашим решением все работает правильно!