Вероятно, основная причина, по которой он не работает, заключается в том, что в didSelectRowAtIndexPath
вы создаете новый экземпляр DetailViewController
вместо использования уже отображенного экземпляра.
Новый созданный вами экземпляр также не отображается (отображается), поэтому, даже если setShowAnnotation работает, вы ничего не видите на экране.
В стандартном приложении на основе Split View основная панель слева называется RootViewController (то, что вы называете SecondViewController). В стандартном шаблоне уже есть detailViewController
ivar, который указывает на отображаемый в данный момент экземпляр DetailViewController
.
Возможно, вы захотите снова запустить приложение с нуля, используя стандартный шаблон, внести как можно меньше изменений и использовать предварительно закодированные функции. Или создайте новый проект, используя стандартный шаблон, и изучите, как он работает, и соответствующим образом измените ваш проект.
Затем в didSelectRowAtIndexPath
вместо создания нового экземпляра DetailViewController
просто вызовите setShowAnnotation
на иваре:
[detailViewController setShowAnnotation];
Другая вещь, которую я хотел бы предложить, - вместо того, чтобы использовать глобальные переменные для «передачи» координат в подробный вид, добавить широту и долготу в качестве параметров в сам метод setShowAnnotation
.
Таким образом, объявление метода будет выглядеть примерно так:
- (void)setShowAnnotationWithLat:(CLLocationDegrees)latitude
andLong:(CLLocationDegrees)longitude;
и это будет называться так:
[detailViewController setShowAnnotationWithLat:15.1025 andLong:100.251];
и избавьтесь от глобальных переменных.