MKLocalSearch БЕЗ MKMapView

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

Я просто хотел бы выполнить поиск по предопределенной строке и загрузить результаты в виде таблицы, не имея сначала карты, есть ли хороший пример того, как это сделать?

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

Дальнейшее редактирование: Анна ниже указала, что проблема может быть в UISearchDisplayController, однако я разорвал текущий код прямо из рабочего примера проекта, поэтому я действительно не могу понять, что происходит по-другому или почему UISearchDisplayController не показывает Результаты.

файл заголовка:

#import <UIKit/UIKit.h> #import <MapKit/MapKit.h> #import <CoreLocation/CoreLocation.h> @interface CallACabViewController : UIViewController <CLLocationManagerDelegate, UITableViewDataSource, UITableViewDelegate, UISearchDisplayDelegate> { CLLocationManager *locationManager; MKLocalSearch *localSearch; MKLocalSearchResponse *results; } -(IBAction)closeButtonClicked:(id)sender; @end 

файл реализации:

 - (void)viewDidLoad { [super viewDidLoad]; locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; [self.searchDisplayController setDelegate:self]; locationManager.distanceFilter = kCLDistanceFilterNone; locationManager.desiredAccuracy = kCLLocationAccuracyBest; [locationManager startUpdatingLocation]; } #pragma mark - LocationUpdating -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { CLLocation *newLocation = [locations lastObject]; CLLocation *oldLocation; if (locations.count > 1) { oldLocation = [locations objectAtIndex:locations.count-2]; } else { oldLocation = nil; } NSLog(@"didUpdateToLocation %@ from %@", newLocation, oldLocation); MKCoordinateRegion userLocation = MKCoordinateRegionMakeWithDistance(newLocation.coordinate, 1500.00, 1500.00); [self performSearch:userLocation]; } #pragma mark - Search Methods -(void)performSearch:(MKCoordinateRegion)aRegion { // Cancel any previous searches. [localSearch cancel]; [locationManager stopUpdatingLocation]; // Perform a new search. MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init]; request.naturalLanguageQuery = @"taxi"; request.region = aRegion; [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; localSearch = [[MKLocalSearch alloc] initWithRequest:request]; [localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error){ [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; if (error != nil) { [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Map Error",nil) message:[error localizedDescription] delegate:nil cancelButtonTitle:NSLocalizedString(@"OK",nil) otherButtonTitles:nil] show]; return; } if ([response.mapItems count] == 0) { [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"No Results",nil) message:nil delegate:nil cancelButtonTitle:NSLocalizedString(@"OK",nil) otherButtonTitles:nil] show]; return; } results = response; [self.searchDisplayController.searchResultsTableView reloadData]; }]; NSLog(@"DEBUG"); } #pragma mark - TableView Delegate Methods - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [results.mapItems count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *IDENTIFIER = @"SearchResultsCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:IDENTIFIER]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:IDENTIFIER]; } MKMapItem *item = results.mapItems[indexPath.row]; cell.textLabel.text = item.name; cell.detailTextLabel.text = item.placemark.addressDictionary[@"Street"]; return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self.searchDisplayController setActive:NO animated:YES]; } -(IBAction)closeButtonClicked:(id)sender { [locationManager stopUpdatingLocation]; [self dismissViewControllerAnimated:YES completion:nil]; } @end 

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

  • автоматическиAdjustsScrollViewInsets не работает во встроенном UITableViewController с UITableView
  • Добавить несколько строк в detailTextLabel в UITableViewCell
  • Как удалить ячейку из таблицы
  • Недопустимый размер прокрутки UITableView после отклонения другого вида
  • UIPageViewController предотвращает прокрутку моего представления таблицы вверх, когда вы нажимаете строку состояния
  • UITextView sizeThatFits возвращает разный размер, чем boundingRectWithSize
  • Swift TableView для iOS
  • numberOfLines UILabel не работает в ячейке
  • Как правильно изменить ячейки представления таблицы iOS во время выполнения (добавить / удалить subviews?)
  • Динамическая высота таблицы TableCell
  • Как создать табличное представление с изогнутой рамкой?
  • Interesting Posts

    Доступ к быстрому расширению с Objective-C

    Как исправить ошибку «nib но не получить UITableView»?

    Недопустимая структура пакета. Приложение может содержать только один исполняемый файл.

    синхронно в отдельном потоке то же, что и асинхронное

    Быстрая альтернатива для шрифтаDescriptorWithSymbolicTraits ios 8 bug

    метод init и метод типа viewDidLoad

    ARKit – Можно ли отслеживать объекты, например, с помощью vuforia?

    UIDocumentInteractionController скрывает навигационную панель, когда строка состояния больше (заголовок персональной точки доступа)

    Сделать UITableViewHeaderFooterView неличным

    Проверьте, можете ли вы использовать разматывать сегмент перед использованием push segue

    Отображать элементы в разных стилях (List, Grid, Blocks) в Xamarin ios?

    Xcode 6: создать новый файл Objective C?

    Obj-C, как я могу добавить один NSMutableArray к другому?

    Является ли RESTKit хорошей заменой для ASIHTTPRequest?

    Ошибка синхронизации приложения Ford

    Давайте будем гением компьютера.