[swift] PeekPop을 활용한 지도 앱의 상세 정보 창 구현 방법

이번에는 Swift에서 Peek and Pop을 활용하여 사용자가 지도 앱에서 특정 위치를 누르면 상세 정보 창이 나타나는 기능을 구현하는 방법을 알아보겠습니다.

1. Peek and Pop이란?

Peek and Pop은 iOS에서 3D Touch를 지원하는 기기에서 사용할 수 있는 기능입니다. 이 기능을 사용하면 사용자가 화면에서 아주 가볍게 눌러보는 동작을 통해 미리보기를 볼 수 있고, 더 강하게 눌러서 화면을 열 수 있습니다.

2. 지도 앱의 상세 정보 창 구현 방법

2.1. 3D Touch 기능 활성화하기

먼저, 3D Touch 기능을 활성화해야 합니다. 이를 위해 Info.plist 파일에 다음 코드를 추가합니다.

<key>UIForceTouchCapability</key>
<string>YES</string>

2.2. MKMapView Delegate 메소드 구현하기

// 사용자가 지도에서 특정 위치를 눌렀을 때 호출되는 메소드
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
    // 미리보기 화면 생성
    let previewViewController = createPreviewViewController(for: view.annotation)

    // Peek and Pop을 위한 속성 설정
    registerForPreviewing(with: self, sourceView: view)

    // 미리보기 화면 표시
    show(previewViewController, sender: self)
}

// 미리보기 화면을 생성하는 메소드
func createPreviewViewController(for annotation: MKAnnotation) -> UIViewController {
    // 상세 정보 화면을 표시할 뷰 컨트롤러를 생성하고 설정
    let detailViewController = DetailViewController()
    detailViewController.annotation = annotation

    return detailViewController
}

// Peek and Pop을 위한 delegate 메소드
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
    // 눌렀을 때 미리보기로 표시할 뷰 컨트롤러를 반환
    // 미리보기로 표시할 화면이 없으면 nil을 반환하면 Push 동작이 수행됩니다.
    guard let detailViewController = previewingContext.sourceViewController as? DetailViewController else {
        return nil
    }

    return detailViewController
}

func previewingContext(_ previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController) {
    // 더 세부적인 정보를 보려면 해당 뷰 컨트롤러로 이동
    show(viewControllerToCommit, sender: self)
}

3. 상세 정보 창 구현하기

import UIKit
import MapKit

class DetailViewController: UIViewController {
    var annotation: MKAnnotation?

    override func viewDidLoad() {
        super.viewDidLoad()

        // 상세 정보를 표시할 뷰 컨트롤러의 UI를 구현
        // annotation 변수를 사용하여 상세 정보를 가져올 수 있습니다.
    }
}

4. 결론

이제, Peek and Pop을 활용하여 지도 앱에서 특정 위치를 눌렀을 때 상세 정보 창을 구현하는 방법을 알아보았습니다. 이를 통해 사용자에게 좀 더 편리한 경험을 제공할 수 있을 것입니다.

참고로, Peek and Pop은 iOS 9 이상의 기기에서만 지원됩니다.