[SWIFT] 어떻게 MKPointAnnotation에 버튼을 추가하려면?
SWIFT어떻게 MKPointAnnotation에 버튼을 추가하려면?
해결법
-
1.당신은 제목과 자막과 함께 버튼을 추가 구현이 방법이 단지 필요가 맞아요하고있다
당신은 제목과 자막과 함께 버튼을 추가 구현이 방법이 단지 필요가 맞아요하고있다
import UIKit import MapKit import CoreLocation class MapKitViewController: UIViewController, MKMapViewDelegate { let locationManager = CLLocationManager() @IBOutlet weak var nmapView: MKMapView! override func viewDidLoad() { super.viewDidLoad() locationManager.requestWhenInUseAuthorization() locationManager.startUpdatingLocation() let location = CLLocationCoordinate2D( latitude: 53.4265107, longitude: 14.5520357) let span = MKCoordinateSpanMake(0.05, 0.05) let region = MKCoordinateRegion(center: location, span: span) nmapView.setRegion(region, animated: true) nmapView.showsPointsOfInterest = false nmapView.showsUserLocation = true displayMarkers() } // When user taps on the disclosure button you can perform a segue to navigate to another view controller func mapView(mapView: MKMapView!, annotationView view: MKAnnotationView!, calloutAccessoryControlTapped control: UIControl!) { if control == view.rightCalloutAccessoryView{ println(view.annotation.title) // annotation's title println(view.annotation.subtitle) // annotation's subttitle //Perform a segue here to navigate to another viewcontroller // On tapping the disclosure button you will get here } } // Here we add disclosure button inside annotation window func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! { println("viewForannotation") if annotation is MKUserLocation { //return nil return nil } let reuseId = "pin" var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView if pinView == nil { //println("Pinview was nil") pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId) pinView!.canShowCallout = true pinView!.animatesDrop = true } var button = UIButton.buttonWithType(UIButtonType.DetailDisclosure) as UIButton // button with info sign in it pinView?.rightCalloutAccessoryView = button return pinView } func displayMarkers() -> Void { let jsonURL: NSURL = NSURL(string: "http://atnight.wtznc.com/json.php")! var dataFromNetwork: NSData = NSData(contentsOfURL: jsonURL)! let json = JSON(data: dataFromNetwork) var jsonSize = json.count var todaysDate:NSDate = NSDate() var dateFormatter:NSDateFormatter = NSDateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd" var formattedDate:String = dateFormatter.stringFromDate(todaysDate) let annotationView = MKAnnotationView() // Adding button here wont do anything so remove these two lines let detailButton: UIButton = UIButton.buttonWithType(UIButtonType.DetailDisclosure) as UIButton annotationView.rightCalloutAccessoryView = detailButton // For adding button we have to use a method named as viewForAnnotation for(var i = 0; i < jsonSize; i++) { if(json[i]["rozpoczecie"].stringValue == formattedDate) { let clubID = json[i]["id_klub"].stringValue let annotation = MKPointAnnotation() let (resultSet, err) = SD.executeQuery("SELECT * FROM Clubs WHERE ID = ?", withArgs: [clubID]) if(err != nil){println("blad")} else { for row in resultSet { let name = row["Name"]?.asString() let latitude = row["Latitude"]?.asDouble() let longitude = row["Longitude"]?.asDouble() annotation.title = name var markerLatitude: Double = latitude! var markerLongitude: Double = longitude! let location = CLLocationCoordinate2D(latitude: markerLatitude, longitude: markerLongitude) annotation.setCoordinate(location) annotation.subtitle = json[i]["nazwa"].stringValue } nmapView.addAnnotation(annotation) } } } } }
내 출력을 확인하십시오.
from https://stackoverflow.com/questions/28225296/how-to-add-a-button-to-the-mkpointannotation by cc-by-sa and MIT license
'SWIFT' 카테고리의 다른 글
[SWIFT] Alamofire 화재 변수 유형에는 첨자 회원이 없습니다 (0) | 2020.11.06 |
---|---|
[SWIFT] 사용은 열거 사건을 키워드 예약 (0) | 2020.11.06 |
[SWIFT] 스위프트 2 - 패턴 매칭에서 "만약" (0) | 2020.11.06 |
[SWIFT] 스위프트에 Dispatch_Async를 사용하여 UI를 업데이트 (0) | 2020.11.06 |
[SWIFT] archiverootobject 및 unarchiverootobject의 유효한 파일 경로 (0) | 2020.11.06 |