2016-04-15 6 views
1

Я пытаюсь открыть карты apple на карте, которую я создал, и в процессе этого я получаю сообщение об ошибке «непризнанный селектор» отправьте экземпляру ". Я использую дугу, поэтому проблема управления памятью не должна быть. Вот код, который я написал в viewDidLoad. Я создал кнопку, и добавил селектор к нему ..Непризнанный селектор, отправленный в экземпляр при попытке открыть приложение apple maps в моем приложении

UIButton *appleMapsButton = [[UIButton alloc] init]; 
appleMapsButton.frame = CGRectMake(100, 100, 200, 200); 
appleMapsButton.backgroundColor = [UIColor redColor]; 
[appleMapsButton addTarget:self action:@selector(appleMapsClicked:) forControlEvents:UIControlEventTouchUpInside]; 
[mapView addSubview:appleMapsButton]; 

Вот метод действия:

-(void)appleMapsClicked{ 

CLLocationCoordinate2D endingCoord = CLLocationCoordinate2DMake(lat, lng); 
MKPlacemark *endLocation = [[MKPlacemark alloc] initWithCoordinate:endingCoord addressDictionary:nil]; 
MKMapItem *endingItem = [[MKMapItem alloc] initWithPlacemark:endLocation]; 

NSMutableDictionary *launchOptions = [[NSMutableDictionary alloc] init]; 
[launchOptions setObject:MKLaunchOptionsDirectionsModeDriving forKey:MKLaunchOptionsDirectionsModeKey]; 

[endingItem openInMapsWithLaunchOptions:launchOptions]; 
} 

Здесь ошибка я получаю в области отладчика:

- [ MapViewController appleMapsClicked:]: непризнанный селектор, отправленный в экземпляр 0x176564d0 2016-04-15 16: 10: 39.394 Ресторан [1081: 220822] *** Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: '- [MapViewController appleMapsClicked:] : отправлен нераспознанный селектор к экземпляру 0x176564d0'

ответ

3

Вы регистрируетесь, чтобы получать сообщение с помощью метода appleMapsClicked:, но ваш метод не имеет параметра.

Устранение:, или изменение подписи метода на -(void)appleMapsClicked:(id)sender должно быть исправлено.

0

Найдено решение:

При добавлении метода в качестве селектора и метод имеет параметров не не размещают двоеточие рядом метод следующим образом:

(mySelector:) 

Исключив двоеточие, приложение не сбой.

0

Решения:

  1. Изменить метод -(void)appleMapsClicked с -(void)appleMapsClicked:(UIButton *)sender

  2. изменить имя селектора @selector(appleMapsClicked:) с @selector(appleMapsClicked)

Вы можете выбрать любой из этих решений

2

Это происходит со мной большую часть времени. Лучший способ устранить эту ошибку, которая предположить, чтобы «не произойдет в первую очередь», является:

1) Удалить ваш UIButton и IBOutlet 2) Создайте новый UIButton снова и снова к ViewController.

Чтобы узнать, если это проблема, удалите все свои коды внутри функции кнопки и запустите. Если вы нажмете кнопку, и все же она сделает ошибку, вам просто нужно создать новую кнопку.

Возможно, это решение для некоторых.

1

Возможно, вы переименовали или удалили кнопку, которая вызывает appleMapsClicked на MapViewController.

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

Тогда я мог бы решить эту проблему путем открытия Main.StoryBoard с помощью внешний редактор (щелкните правой кнопкой мыши на Main.StoryBoard и нажмите «открыть с помощью внешнего редактора»).

Он откроет раскадровку в виде XML-файла. В редакторе найдите «appleMapsClicked» в узле MapViewController. Первое, что вы можете найти, это ссылка на метод (appleMapsClicked), который больше не существует. Удалите строку и снова запустите.

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

Надеюсь, это поможет.