2013-06-05 6 views
-1

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

+0

Вы хотите исключить места «фильтра», если они не находятся поблизости? Или вы просто хотите показать, что они отсортированы от ближайшего до самого дальнего? Последнее может быть выполнено методом 'NSArray'' sortedArrayUsingComparator: ' –

+0

Извините, что я выражаю свое несоответствие. Я хочу отсортировать их по ближайшим координатам – darkjuso

ответ

1

Предположим, у вас есть NSArray из CLLocation объектов, давайте назовем его locations и CLLocation *currenLocation, которые представляют ваше текущее местоположение.

NSArray *sortedLocations = [locations sortedArrayUsingComparator:^(id obj1, id obj2) { 
     CLLocationDistance distance1 = [currentLocation distanceFromLocation: (CLLocation *)obj1]; 
     CLLocationDistance distance2 = [currentLocation distanceFromLocation: (CLLocation *)obj2]; 

     return distance1 - distance2; 
    }]; 

Edit: Вы можете использовать объект CLLocationManager, чтобы получить частые обновления местоположения пользователя с помощью методов делегата. Вы можете начать его с startUpdatingLocation. Проверьте this, чтобы получить дополнительную информацию.

Вы можете создать CLLocation, если у вас есть географическое положение, по – initWithLatitude:longitude:.

+0

. Можете вы добавить код для массива и текущего местоположения? – darkjuso

+0

Вы имеете в виду код, который их создает? –

+0

да, пожалуйста, я использовал CLLocationCoordinate2D на карте приложение, которое я сделал раньше, но я не знаю, кто это сделает для этого – darkjuso