我在将字符串传递给作为网址的函数时遇到问题,以便通过网页浏览打开该特定方向。
-(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];
但应用程序崩溃了。有什么想法吗?
答案 0 :(得分:2)
您不能使用@selector()以这种方式传递参数。 @selector()仅用于引用一个选择器来响应某些东西而调用,在这种情况下是一个按钮上的目标。
如果你想根据按下的按钮调用不同的网址,这里有关于如何接近它的建议(对于这个示例,我使用三个不同的按钮向您展示如何根据按钮有条件地使用不同的网址按下):
这是你设定目标的地方:
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];
}
答案 1 :(得分:2)
选择器是方法的名称;它不包括参数。你需要使用......
[btnDetails addTarget:self action:@selector(toWeb:) forControlEvents:UIControlEventTouchUpInside];
...并找到获取URL字符串的另一种方法。 toWeb:
获取的参数是按钮(通常称为“发件人”)。