투케이2K

283. (ios/swift) UIAlertController 사용해 alert 팝업창에 MKMapView 맵뷰 표시 수행 - 위도 , 경도 설정 본문

IOS

283. (ios/swift) UIAlertController 사용해 alert 팝업창에 MKMapView 맵뷰 표시 수행 - 위도 , 경도 설정

투케이2K 2022. 11. 13. 20:14

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT

 

[소스 코드]

    // [alert 팝업창 호출 메소드 정의 실시 : 이벤트 호출 시]
    // 호출 방법 : showAlert(tittle: "title", content: "content", okBtb: "확인", noBtn: "취소")
    func showAlert(tittle:String, content:String, okBtb:String, noBtn:String) {
        
        DispatchQueue.main.async {
            
            // --------------------------------
            
            // [UIAlertController 객체 정의 실시]
            let alert = UIAlertController(title: tittle, message: content, preferredStyle: UIAlertController.Style.alert)
            
            // --------------------------------
            
            // MARK: [MKMapView 사용 : import MapKit]
            
            // --------------------------------
            
            // [컨텐츠 뷰 영역에 들어갈 뷰 컨트롤러를 생성]
            let contentVC = UIViewController()
                
            // [뷰 컨트롤러에 맵킷 뷰 추가]
            let mapKitView = MKMapView(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
            contentVC.view = mapKitView
            contentVC.preferredContentSize.height = 200
                
            // [위치 정보 = 위도 / 경도 설정]
            let pos = CLLocationCoordinate2D(latitude: 37.614322, longitude: 126.924623)
                
            // [지도에서 보여줄 넓이 = 숫자가 작을수록 좁은 범위를 확대시켜서 표시됨]
            let span = MKCoordinateSpan(latitudeDelta: 0.005, longitudeDelta: 0.005)
                
            // [지도 영역 정의]
            let region = MKCoordinateRegion(center: pos, span: span)
                
            // [지도 뷰에 표시]
            mapKitView.region = region
            mapKitView.regionThatFits(region)
                
            // [위치를 핀으로 표시]
            let point = MKPointAnnotation()
            point.coordinate = pos
            mapKitView.addAnnotation(point)
                
            // 뷰 컨트롤러를 알림창의 컨텐츠 뷰 컨트롤러 속성에 등록]
            alert.setValue(contentVC, forKey: "contentViewController")
            
            // --------------------------------
            
            // [인풋으로 들어온 확인 버튼이 nil 아닌 경우]
            if(okBtb != "" && okBtb.count>0){
                let okAction = UIAlertAction(title: okBtb, style: .default) { (action) in
                    
                    // [확인 버튼 클릭 이벤트 내용 정의 실시]
                    return
                }
                alert.addAction(okAction) // 버튼 클릭 이벤트 객체 연결
            }
            
            // --------------------------------
            
            // [인풋으로 들어온 취소 버튼이 nil 아닌 경우]
            if(noBtn != "" && noBtn.count>0){
                let noAction = UIAlertAction(title: noBtn, style: .default) { (action) in
                    
                    // [취소 버튼 클릭 이벤트 내용 정의 실시]
                    return
                }
                alert.addAction(noAction) // 버튼 클릭 이벤트 객체 연결
            }
            
            // --------------------------------
            
            // [alert 팝업창 활성 실시]
            self.present(alert, animated: false, completion: nil)
            
            // --------------------------------
        }
    }
 

[결과 출력]

 

 

반응형
Comments