Как открыть веб-сайт из приложения в Safari, используя URL-адрес, сохраненный в массиве? - PullRequest
0 голосов
/ 17 января 2012

Привет, ребята. Я работаю над приложением для iPad, и мне нужен совет.

У меня есть массив, в котором хранится информация о пользователях в сети, и одним из данных является 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 с раскадровкой

Ответы [ 2 ]

0 голосов
/ 10 апреля 2013

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

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

Вместо этого, чтобы создать URL, просто:

[NSURL URLWithString:loginObj.loginURL]

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

0 голосов
/ 18 января 2012

Объявите целое число, подобное приведенному ниже, в вашем файле интерфейса,

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

}

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

...