1

WebView を介してその特定の方向を開くために、Web アドレスである関数に文字列を渡す際に問題があります。

-(IBAction)toWeb:(NSString*)web_direction {
    UIViewController *webViewController = [[[UIViewController alloc] init] autorelease];

    UIWebView *uiWebView = [[[UIWebView alloc] initWithFrame: CGRectMake(0,0,320,480)] autorelease];

     [uiWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:web_direction]]];

    [webViewController.view addSubview: uiWebView];
    webViewController.title = @"web bar";
    [self.navigationController pushViewController:webViewController animated:YES];

}

次を使用して、MKanotation を介してその関数を呼び出したい:

NSString *direction = @"http://www.google.com";
[btnDetails addTarget:self action:@selector(toWeb:direction) forControlEvents:UIControlEventTouchUpInside]; 

しかし、アプリがクラッシュします。それについて何か考えはありますか?

4

2 に答える 2

2

@selector() を使用して、その方法でパラメーターを渡すことはできません。@selector() は、何か (この場合はボタンのターゲット) に応答して呼び出すセレクターを参照することのみを目的としています。

押されたボタンに基づいて異なる URL を呼び出したい場合は、それにアプローチする方法についての提案があります (このサンプルでは、​​3 つの異なるボタンを使用して、押されたボタンに基づいて異なる URL を条件付きで使用する方法を示します)。

これは、ターゲットを設定している場所に行きます:

btnDetailsForGoogle.tag = 1;
[btnDetailsForGoogle addTarget:self action:@selector(toWeb:) forControlEvents:UIControlEventTouchUpInside];
btnDetailsForYahoo.tag = 2;
[btnDetailsForYahoo addTarget:self action:@selector(toWeb:) forControlEvents:UIControlEventTouchUpInside];
btnDetailsForBing.tag = 3;
[btnDetailsForBing addTarget:self action:@selector(toWeb:) forControlEvents:UIControlEventTouchUpInside]; 

そして、これが更新された IBAction メソッドです

-(IBAction)toWeb:(id)sender {
    NSString *web_direction = @"";
    if (((UIButton *)sender).tag == 1)  web_direction = @"www.google.com";
    if (((UIButton *)sender).tag == 2)  web_direction = @"www.yahoo.com";
    if (((UIButton *)sender).tag == 3)  web_direction = @"www.bing.com";
    UIViewController *webViewController = [[[UIViewController alloc] init] autorelease];

    UIWebView *uiWebView = [[[UIWebView alloc] initWithFrame: CGRectMake(0,0,320,480)] autorelease];

     [uiWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:web_direction]]];

    [webViewController.view addSubview: uiWebView];
    webViewController.title = @"web bar";
    [self.navigationController pushViewController:webViewController animated:YES];

}
于 2012-05-27T15:08:09.507 に答える
2

セレクターはメソッドの名前です。パラメータは含まれません。使用する必要があります...

[btnDetails addTarget:self action:@selector(toWeb:) forControlEvents:UIControlEventTouchUpInside]; 

...そして、URL 文字列を取得する別の方法を見つけます。取得するパラメーターtoWeb:はボタン (通常は「送信者」と呼ばれます) です。

于 2012-05-27T15:08:56.410 に答える