2012-01-17 1 views
0

Привет, ребята, я работаю над iPad-приложением, и мне нужен совет.Как открыть веб-сайт из приложения в Safari, используя URL-адрес, хранящийся в массиве?

У меня есть массив, в котором хранится информация пользователей в Интернете, а одна из данных - это URL. Список информации отображается в представлении таблицы основных деталей, и после его выбора он заполнит подробный вид, чтобы отобразить всю его информацию, по одному из них - URL. Я хочу, чтобы иметь возможность перейти к показанному URL-адресу, нажав кнопку, которая приведет меня в Safari и отобразит эту веб-страницу.

ниже проблема:

-(IBAction)loginClicked:(id)sender{ 
NSLog(@"loginClicked"); 

//--What should i replace indexPath.row with so that it will point to the current selected row? 
loginObj = [appDelegate.loginArray objectAtIndex:indexPath.row]; 

//--if the above indexPath.row is replaced with an integer, the NSLog is able to print out the correct URL of that row 
NSLog(@"URL = %@", loginObj.loginURL); 

//--then when i insert loginObj.loginURL, it gives me error "too many arguments method to call, expected 1, have 2" but when i insert a proper URL @"http://www.google.com" it has no problem opening it up. 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"%@", loginObj.loginURL]]; 

} 

loginURL объявлен как NSString в моем классе.

я использую SDK4.2 iOS5, IPad мастер подробно шаблон представления с раскадровки

ответ

0

Объявляет целое, как ниже в файле интерфейса,

int theCurrentSelectedRow; 

В вашем методе didSelectRow

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath 
{ 
    theCurrentSelectedRow = indexPath.row; 
} 

Измените свой метод, приведенный ниже,

-(IBAction)loginClicked:(id)sender{ 
NSLog(@"loginClicked"); 

loginObj = [appDelegate.loginArray objectAtIndex:theCurrentSelectedRow]; 

NSLog(@"URL = %@", loginObj.loginURL); 

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"%@", loginObj.loginURL]]; 

} 

Идея состоит в том, чтобы сохранить текущий выбранный индекс строки в глобальном var и использовать его в вашем методе.

0

+[NSURL URLWithString:] не поддерживает вариационные аргументы. Вы должны получать предупреждения компилятора, по крайней мере, что этот бит кода неправильно:

[NSURL URLWithString: @"%@", loginObj.loginURL] 

Вместо того, чтобы построить URL, просто:

[NSURL URLWithString:loginObj.loginURL] 

Еще лучше, обновить модели классов иметь дело с NSURL напрямую.

Смежные вопросы