こんにちは、私は Web ビュー ベースのアプリケーションに取り組んでいます。その中に WebController があり、その中に現在の URL を保持する変数があります。
最近、ビューを起動するコードを追加しました。これは正常に動作します。このビューには別の Web ビューも保持されます。この Web ビューは、次のようにサイトをロードすると正常に動作します。
[[mywebview mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:
[@"http://www.google.com/search?hl=en&q=" stringByAppendingString:@"test"]]]];
ただし、次のように現在の URL を保持する変数にアクセスしようとしています。
[[mywebview mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:
[@"http://www.google.com/search?hl=en&q=" stringByAppendingString:currentURL]]]];
ただし、WebController にリンクしてこれを行うと、currentURL は何もないように見えますが、ファーストレスポンダーから実行する場合は完全に正常に機能します (もちろん、ビューが表示されなくなったことを除きます)。
私の質問は、WebController からリンクされたときに currentURL 変数を機能させるにはどうすればよいですか?
私は比較的ココアに慣れていないので、簡単な質問で申し訳ありません!
編集:コメントから追加
メソッドinitWithWindowController
currentURL
では に設定され@""
、メソッドでは に設定さdealloc
れnil
ます。currentURL は、他の Web ビューから取得されます。ここを参照してください。
- (void)webView:(WebView *)wv didStartProvisionalLoadForFrame:(WebFrame *)frame {
if (frame != [self.webView mainFrame])
return;
self.currentUrl = [[[[frame provisionalDataSource] request] URL] absoluteString];
[self retain];
}
WebController.h で currentURL を宣言しています
@interface WebController : NSObject <DOMEventListener>
{
IBOutlet NSString *currentURL;
}
@property (nonatomic, copy) IBOutlet NSString *currentURL;
@end
DisplayInView 関数の WebController.m で currentURL を使用しようとしています。
-(IBAction) DisplayInView:(id) sender
{
if ([siteview isInFullScreenMode])
{
[siteview exitFullScreenModeWithOptions:nil];
}
else
{
[[mywebview mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString: [@"google.com/search?hl=en&q="stringByAppendingString:currentURL]]]]; siteview enterFullScreenMode:[[siteview window] screen] withOptions:nil];
}
}
@synthesize siteview;
@end