Кликабельные ссылки в UITableView, открывающие Safari - PullRequest
4 голосов
/ 22 февраля 2010

Я работаю над приложением для iPhone и хотел бы иметь возможность щелкнуть ссылку, которая есть в UITableView. Когда выбрана только ссылка, я хочу, чтобы приложение Safari открывалось по выбранной ссылке. Любые предложения о том, как это сделать? Большое спасибо!

Ответы [ 3 ]

4 голосов
/ 25 февраля 2010

Существует несколько решений вашей проблемы.

Если ссылки являются единственным объектом в ячейке, вы можете просто вызвать функцию didSelectRowAtIndexPath:(NSIndexPath *)indexPath из UITableView, чтобы собрать ссылку из массива табличных данных, а затем использовать

[[UIApplication sharedApplication] openURL:myURL];

чтобы открыть URL.

В качестве альтернативы вы можете создать свой собственный подкласс UITableCell, который содержит пользовательскую кнопку (вместо закругленной прямоугольной кнопки), у которой нет изображения или фона (только текст), чтобы он имел вид ссылки (вы могли даже раскрасить текст синий, и подчеркните его ...). Когда пользователь нажимает кнопку, ваша функция-обработчик вызывает ту же функцию openURL, что и выше.

Описанный выше метод работает лучше всего, если у вас есть несколько элементов в каждой ячейке (именно поэтому вам придется создать собственную ячейку ...

0 голосов
/ 24 февраля 2010

Является ли ссылка в отдельной строке в UITableView? Если это так, то вы можете обработать его в didSelectRowAtIndexPath при нажатии на соответствующую строку.

0 голосов
/ 23 февраля 2010

Наивным подходом было бы встроить крошечный UIWebView в каждую ячейку. UIWebView имеет делегата, который позволяет вам знать, когда нажата ссылка, которую вы можете реализовать для запуска Safari или перехода к новому контроллеру с полноэкранным UIWebView.

Этот подход может быть слишком ресурсоемким, и я сам не пробовал его, но если бы он работал, он предложил бы большую гибкость. Хотелось бы узнать результаты, если вы попробуете это.

Чтобы запустить ссылку в сафари, используйте:

NSURL *url = [NSURL URLWithString:@"http://stackoverflow.com"];
if (![[UIApplication sharedApplication] openURL:url]) {
    NSLog(@"%@%@", @"Failed to open url:", [url description]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...