#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. Теперь с вашим решением все работает правильно!