2012-05-27 41 views
1

我有一個問題,即將字符串傳遞給一個Web地址的函數,以便通過webview打開該特定方向。如何將網址字符串傳遞到函數

-(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

通常當你調用一個IBAction的時候發送的是發送者,我不確定你在用那個字符串時想要做什麼。 –

回答

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]; 

} 
+0

這是一個好方法,但在我的情況下,我從json字符串中讀取了一些信息,如名稱,位置和weburl。我把這個位置放在地圖上,並且我讀到了接觸註釋引腳的名字。該想法打開了傳遞網址字符串的網頁。 Perarps,正如你所說,我可以打電話給一個讀取這個字符串並將它返回的字符串?謝謝 – doxsi

2

器的SEL ector是方法的名稱;它不包含參數。您需要使用...

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

...並找到另一種獲取URL字符串的方法。 toWeb:獲取的參數是按鈕(通常稱爲「發件人」)。

相關問題