2012-03-30 2 views
0

Я разрабатываю приложение для iPhone для университетского проекта, и я новичок в разработке iPhone. Я просмотрел код Apple MapCallouts, но реализовать его не представляется возможным.Мои карты выноски не отображают изображение при нажатии

Пока мой код отображает карту, уменьшает аннотации, отображает заголовок и отображает кнопку прямого вызова. Но здесь я столкнулся с проблемами.

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

Я добавил мой код ниже:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view 
     calloutAccessoryControlTapped:(UIControl *)control 
{ 
    //NSUInteger tag = ((UIButton *)control).tag; 

    if (self.detailController==nil) 
    { 
     DetailViewController* detailViewController = [[DetailViewController alloc] init]; 
     [self.navigationController pushViewController:detailViewController animated:YES];    
    } 

    // self.detailController.tag =1; //to identify image required 
    // self.detailController.tag = tag; 

    [self.navigationController pushViewController:detailController animated:YES]; 
} 
+0

Показать метод, который вызывается при нажатии кнопки вызова. Измените свой вопрос и добавьте в него код. – Anna

+0

Является ли detailController вообще? Также обратите внимание, что ваш текущий код будет дважды нажимать, если detailController равен нулю. Это ваш фактический код (у вас есть 'detailController' и' detailViewController')? Вместо того, чтобы пытаться использовать теги для идентификации аннотации, она доступна непосредственно в view.annotation. Например, см. Http://stackoverflow.com/questions/8256288/how-to-pass-sender-tag-in-detailview-to-get-default-map-application-for-directio и http: // stackoverflow. com/questions/7921106/optimizing-code-for-mkmapview-large-of-annotations – Anna

+0

Когда я запускаю приложение, просмотр загружается, когда аксессуар вызова вызывается, но на нем отображается черный пустой экран, на котором должно быть изображение и я также получаю следующую ошибку: приложение попыталось нажать на контроллер представления nil на цель

ответ

0

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

Самый простой (как минимум кодирования требуется) способ представления изображения заключается в следующем:

  1. Перетащите контроллер представления в раскадровке
  2. Перетащите UIImageView в контроллер
  3. просмотра Выберите изображение, которое вы хотите для отображения в редакторе свойств UIImageview
  4. Управление перетаскиванием с кнопки на вашем главном контроллере представления на контроллер вида, содержащий изображение
  5. Это должно быть пришла в Сегу. Выберите сегю и выберите «модальный» в меню стиля.

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