2016-11-08 2 views
0

나는 매우 신속하므로 내게 이것을 설명 할 수 있다면 아주 멋지다. 지도 키트가있는 앱을 만들려고합니다. 위치가 다른 약 20 개의 핀이 있습니다. 지금까지 필자는 이름, 부제 및 정보 버튼이 표시된 주석이있는 핀을 만들었습니다.UI보기간에 데이터 전송 및 전송. [지도 키트]

이제 두 번째 UI보기에 링크하기 위해 "정보"버튼을 얻으려고합니다. 아래 그림과 같이 현재 나는 단지 그것을 텍스트를 인쇄하도록 코딩 한 :

내가 다른 그림이있을 것이다 I 메인 스토리 보드에서 만든 새로운 UI를 열고 버튼을 연결할 수있는 방법을 알 필요가
func mapView(_ mapView: MKMapView, annotationView view:  MKAnnotationView, calloutAccessoryControlTapped control: UIControl){ 
    if control == view.rightCalloutAccessoryView { 
     print("Button taaped ") 
    } 

, 제목 및 설명은 클릭 한 핀에 따라 다릅니다. 누군가가 이것을 간단하게 설명 할 수 있다면 매우 감사 할 것입니다. 감사합니다.

답변

0

두보기 컨트롤러간에 segue를 만들고 스토리 보드에서 다시 식별자를 지정하고 print 대신 코드에서 segue를 수행하여 식별자 함수를 호출하고 식별자의 캐릭터 라인을 사용하면 calloutAccessoryControlTapped:에 스토리 보드

+0

스토리 보드에 단편을 만들 수 있습니까? 이것은 모든 20 개의 핀에 대해 개별 UI보기가 필요하다는 것을 의미합니까? –

+0

아니요,지도보기 컨트롤러와 세부보기 컨트롤러 –

+0

사이의 단 하나의 단락 및 메서드 세부 뷰 컨트롤러에 각 핀의 세부 정보를 전달합니다 –

0

에 입력 한대로 정확하게 당신이 호출 할 수 있습니다 : 당신이 prepareForSegue에 annotationView을 보내려고

func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl){ 
if control == view.rightCalloutAccessoryView { 
    performSegue(withIdentifier: "segue for otherView identifier", sender: view) 
} 

. 당신이 방법 prepareForSegue:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "segue for otherView identifier" { 
     let annotationView = sender as! MKAnnotationView 
     let otherView = segue.destinationViewController as! OtherviewController 
     otherView.image = annotationView.image 
     otherView.title = annotationView.annotation?.title 
     otherView.description = annotationView.annotation?.subtitle 
    } 

} 
당신은 단지 확인해야

당신의 otherViewController 당신이 다른보기를 형성 받기 원하는 모든 특성을 갖는 (이미지, 제목, 설명)에

를 구현하고 그 후

+0

if control == view.rightCalloutAccessoryView { performSegue (withIdentifier : "otherView 식별자에 대한 segue", 보낸 사람 : nil)'이렇게 하시겠습니까? 또한 Second View Controller 클래스에서이'prepareForSegue' 메소드를 어떻게 구현합니까? –

+0

예. storyBoard에서 두 뷰를 연결할 때 segue에 부여해야하는 segue 식별자에 대해 String "segue for otherView identifier"만 변경하면됩니다. 또한 두 번째보기 컨트롤러에서이 메서드를 구현할 필요가 없으며 첫 번째 컨트롤러에서이 메서드를 구현합니다. –

+0

이 식별자는 모든 20 핀에 대해 고유해야합니까? 또는 각 핀당 하나씩 20 개의 UI 뷰가 필요합니까? 또한, 내가 사용하는 문자열은 임의적입니까? –