用戶可以搜索任何位置,但是如何將該位置保存在不同視圖控制器中的應用程序中。換句話說,這個位置的位置標題有一個針,我希望用戶用標題點擊該針,然後進入下一個視圖。控制器位置將以標題顯示。我如何用Swift 2來做到這一點?Swift 2:如何保存用戶在地圖上搜索的地點/位置?
下面是代碼到目前爲止獲得引腳。還有一個代碼來搜索這裏沒有包含的地址。我想要的是能夠點擊該標題的標題,並轉到另一個視圖控制器,你可以看到地圖的一部分,並且該視圖控制器能夠做更多的事情。
protocol HandleMapSearch {
func dropPinZoomIn(placemark:MKPlacemark)
}
class ViewController: UIViewController {
let locationManager = CLLocationManager()
var resultSearchController:UISearchController? = nil
var selectedPin:MKPlacemark? = nil
@IBOutlet weak var mapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
locationManager.requestLocation()
//
let locationSearchTable = storyboard!.instantiateViewControllerWithIdentifier("LocationSearchTable") as! LocationSearchTable
resultSearchController = UISearchController(searchResultsController: locationSearchTable)
resultSearchController?.searchResultsUpdater = locationSearchTable
//
let searchBar = resultSearchController!.searchBar
searchBar.sizeToFit()
searchBar.placeholder = "Search for places"
navigationItem.titleView = resultSearchController?.searchBar
//
resultSearchController?.hidesNavigationBarDuringPresentation = false
resultSearchController?.dimsBackgroundDuringPresentation = true
definesPresentationContext = true
//
locationSearchTable.mapView = mapView
//
locationSearchTable.handleMapSearchDelegate = self
//
let button = UIButton(type: UIButtonType.System) as UIButton
button.frame = CGRectMake(100, 100, 100, 50)
button.backgroundColor = UIColor.greenColor()
button.setTitle("Button", forState: UIControlState.Normal)
button.addTarget(self, action: "Action:", forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(button)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
extension ViewController : CLLocationManagerDelegate {
func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if status == .AuthorizedWhenInUse {
locationManager.requestLocation()
}
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let location = locations.first {
let span = MKCoordinateSpanMake(0.05, 0.05)
let region = MKCoordinateRegion(center: location.coordinate, span: span)
mapView.setRegion(region, animated: true)
}
}
func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
print("error:: \(error)")
}
}
extension ViewController: HandleMapSearch {
func dropPinZoomIn(placemark:MKPlacemark){
// cache the pin
selectedPin = placemark
// clear existing pins
mapView.removeAnnotations(mapView.annotations)
let annotation = MKPointAnnotation()
annotation.coordinate = placemark.coordinate
annotation.title = placemark.name
if let city = placemark.locality,
let state = placemark.administrativeArea {
annotation.subtitle = "\(city) \(state)"
}
mapView.addAnnotation(annotation)
let span = MKCoordinateSpanMake(0.05, 0.05)
let region = MKCoordinateRegionMake(placemark.coordinate, span)
mapView.setRegion(region, animated: true)
}
}
你需要澄清你在問什麼。你對我的回答發表的評論沒有任何意義。 –
放棄之前,這裏有一些信息給你。看看地圖視圖委託方法'viewForAnnotation'。這可讓您爲註釋創建自定義註釋視圖。然後看看'MKAnnotationView'類和它的'leftCalloutAccessoryView'及其'rightCalloutAccessoryView'屬性。 (你需要實現'viewForAnnotation'方法並添加一個輔助視圖到你的pin註釋中,然後實現'mapView:annotationView:calloutAccessoryControlTapped:'方法。 –
就像在Facebook的文章中,你可以搜索並添加一個位置在視圖控制器中,那麼它可以返回到主視圖控制器,您可以發佈該位置並添加一些註釋。我想要的是搜索任何位置(完成),位置顯示爲一個引腳(完成,上面的代碼),然後點擊/在該位置點擊並轉到另一個視圖控制器的位置是一種保存和顯示,並做更多在該視圖控制器中的東西(在Facebook的情況下添加評論)。我認爲這更清楚。 –