2015-07-13 3 views
1

Я использую локальную функцию поиска MapKit, чтобы заполнить кучу булавки-аннотации на основе поиска пользователя. Когда вы нажимаете на булавку, в выноске вы переходите к подробному диспетчеру просмотра местоположения. Когда пользователь перебирает и нажимает кнопку «Назад» на панели инструментов с контроллера detailviewcontroller на предыдущий диспетчер представлений, все сообщения аннотации исчезли. Есть ли способ избежать этого?Аннотации сброса после segue назад к исходной карте (Mapkit Swift)

вот мой код LocalSearch:

@IBAction func returnText(sender: AnyObject) { 
    sender.resignFirstResponder(); 
    attractionsMap.removeAnnotations(attractionsMap.annotations); 
    performSearch(); 
} 
func performSearch() { 


    matchingItems.removeAll() 

    let request = MKLocalSearchRequest() 
    request.naturalLanguageQuery = searchText.text; 

    request.region = attractionsMap.region; 

    let search = MKLocalSearch(request: request) 

    search.startWithCompletionHandler({(response: 
     MKLocalSearchResponse!, 
     error: NSError!) in 

     if error != nil { 
      println("Error occured in search: \(error.localizedDescription)") 
     } else if response.mapItems.count == 0 { 
      println("No matches found") 
     } else { 
      println("Matches found") 

      for item in response.mapItems as! [MKMapItem] { 
       println("Name = \(item.name)") 
       println("Phone = \(item.phoneNumber)") 

       matchingItems.append(item as MKMapItem) 
       println("Matching items = \(matchingItems.count)") 

       var placemark = item.placemark; 
       var subThoroughfare:String = ""; 
       var thoroughfare:String = ""; 
       var locality:String = ""; 
       var postalCode:String = ""; 
       var administrativeArea:String = ""; 
       var country:String = ""; 
       var title = ""; 
       var subtitle = ""; 

       if (placemark.subThoroughfare != nil) { 
        subThoroughfare = placemark.subThoroughfare; 
       } 
       if(placemark.thoroughfare != nil) { 
        thoroughfare = placemark.thoroughfare; 
       } 
       if(placemark.locality != nil) { 
        locality = placemark.locality; 
       } 
       if(placemark.postalCode != nil) { 
        postalCode = placemark.postalCode; 
       } 
       if(placemark.administrativeArea != nil) { 
        administrativeArea = placemark.administrativeArea; 
       } 
       if(placemark.country != nil) { 
        country = placemark.country; 
       } 
       println("viewcontroller placmark data:"); 
       println(locality); 
       println(postalCode); 
       println(administrativeArea); 
       println(country); 

       title = " \(subThoroughfare) \(thoroughfare) \n \(locality), \(administrativeArea) \n \(postalCode)\(country)"; 
       subtitle = " \(subThoroughfare) \(thoroughfare)"; 
       println(title); 

       var annotation = MKPointAnnotation() 
       annotation.coordinate = item.placemark.coordinate 
       annotation.title = item.name + " " + subtitle; 
       self.attractionsMap.addAnnotation(annotation) 
      } 
     } 
    }) 
} 

Я затем передать метку из совпадающих элементов с помощью этого метода ...

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    var attractionsDetailViewController:AttractionsDetailViewController = segue.destinationViewController as! AttractionsDetailViewController 
    attractionsDetailViewController.attractionLocation = indicatedMapItem; 
} 

Любая помощь будет принята с благодарностью.

ответ

Смежные вопросы