0

こんにちは、私は 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では に設定され@""、メソッドでは に設定さdeallocnilます。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 
4

1 に答える 1

0

これがあなたの問題なのか、コピーと貼り付けのエラーなのかわかりませんが、投稿したコードは次のとおりです。

[@"google.com/search?hl=en&q="; stringByAppendingString:currentURL]]]];

途中にセミコロンがあります。しかし、それはコンパイルさえすべきではありません。

于 2012-12-16T20:50:34.650 に答える