1

我在将字符串传递给作为网址的函数以通过 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];

}

我想通过 MKannotation 调用该函数:

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

但是应用程序崩溃了。有什么想法吗?

4

2 回答 2

2

您不能使用@selector() 以这种方式传递参数。@selector() 仅用于引用选择器以响应某些内容而调用,在这种情况下是按钮上的目标。

如果您想根据按下的按钮调用不同的 url,这里有一个关于如何处理它的建议(对于这个示例,我使用三个不同的按钮向您展示如何根据按下的按钮有条件地使用不同的 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 回答