투케이2K

23. (TWOK/UTIL) [Ios/Swift] C_Ui_View - 팝업창 표시 , UI 뷰 관련 표시 수행 본문

투케이2K 유틸파일

23. (TWOK/UTIL) [Ios/Swift] C_Ui_View - 팝업창 표시 , UI 뷰 관련 표시 수행

투케이2K 2022. 3. 26. 22:00

[설 명]

프로그램 : Ios / Swift

설 명 : 팝업창 표시 , UI 뷰 관련 표시 수행

 

[소스 코드]

 

import Foundation
import UIKit
import SafariServices


// MARK: [extension 정의 실시 : 뷰 컨트롤러]
extension UIViewController {
    
    
    // MARK: - [클래스 설명]
    /*
    // -----------------------------------------
    1. Ui 화면 표시 관련 뷰 정의 클래스
    // -----------------------------------------
    */
    
    
    
    
    
    // MARK: - [alert 팝업창 표시 수행]
    func showAlert(type:Int, tittle:String, content:String, okBtb:String, noBtn:String) {
        
        /*
        // -----------------------------------------
        [showAlert 메소드 설명]
        // -----------------------------------------
        1. 일반 팝업창 수행 메소드
        // -----------------------------------------
        2. type 속성 값 정리 :
           - type == 0 : 일반 알림 표시
           - type == 1 : 애플리케이션 권한 설정창 이동
        // -----------------------------------------
        3. 호출 방법 :
         // [팝업창 표시 수행 실시]
         self.showAlert(
             type: 0,
             tittle: S_FinalData.AL_TITLE,
             content: "내용 입니다",
             okBtb: S_FinalData.AL_OK,
             noBtn: S_FinalData.AL_NO
         )
        // -----------------------------------------
        */
        
        // [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
        DispatchQueue.main.async {
            print("")
            print("====================================")
            print("[C_Ui_View >> showAlert() :: 팝업창 표시 수행 실시]")
            print("-------------------------------")
            print("type :: ", type)
            print("-------------------------------")
            print("tittle :: ", tittle)
            print("-------------------------------")
            print("content :: ", content)
            print("-------------------------------")
            print("okBtb :: ", okBtb)
            print("-------------------------------")
            print("noBtn :: ", noBtn)
            print("====================================")
            print("")
            
            
            // [UIAlertController 객체 정의 실시]
            let alert = UIAlertController(
                title: tittle + "\n",
                message: content + "\n",
                preferredStyle: UIAlertController.Style.alert
            )
            
            
            // [인풋으로 들어온 확인 버튼이 nil 아닌 경우]
            if(okBtb != "" && okBtb.count>0){
                let okAction = UIAlertAction(title: okBtb, style: .default) { (action) in
                    // [확인 버튼 클릭 이벤트 내용 정의 실시]
                    if type == 0 {
                        // [일반 팝업창 알림]
                    }
                    if type == 1 {
                        // [애플리케이션 설정창 이동]
                        self.goAppSetting()
                    }
                    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)
        }
    }
    
    
    
    
    
    // MARK: [클립보드 복사 팝업창 호출 처리 메소드]
    func showAlertCopy(tittle:String, content:String, okBtb:String, noBtn:String) {
        
        /*
        // -----------------------------------------
        [showAlertCopy 메소드 설명]
        // -----------------------------------------
        1. 클립보드 복사 팝업창 수행 메소드
        // -----------------------------------------
        2. 호출 방법 :
         // [팝업창 표시 수행 실시]
         self.showAlertCopy(
             tittle: S_FinalData.AL_TITLE,
             content: "내용 입니다",
             okBtb: S_FinalData.AL_OK,
             noBtn: S_FinalData.AL_NO
         )
        // -----------------------------------------
        */
        
        // [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
        DispatchQueue.main.async {
            print("")
            print("====================================")
            print("[C_Ui_View >> showAlertCopy() :: 클립보드 복사 팝업창 표시 수행 실시]")
            print("-------------------------------")
            print("tittle :: ", tittle)
            print("-------------------------------")
            print("content :: ", content)
            print("-------------------------------")
            print("okBtb :: ", okBtb)
            print("-------------------------------")
            print("noBtn :: ", noBtn)
            print("====================================")
            print("")
            
            
            // [UIAlertController 객체 정의 실시]
            let alert = UIAlertController(
                title: tittle + "\n",
                message: content + "\n",
                preferredStyle: UIAlertController.Style.alert
            )
            
            
            // [인풋으로 들어온 확인 버튼이 nil 아닌 경우]
            if(okBtb != "" && okBtb.count>0){
                let okAction = UIAlertAction(title: okBtb, style: .default) { (action) in
                    //----------------------------------
                    // MARK: [확인 버튼 클릭 이벤트 내용 정의 실시 >> 클립보드 복사]
                    UIPasteboard.general.string = content
                    //----------------------------------
                    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)
        }
    }
    
    


    // MARK: - [alert sheet 팝업창 표시 수행]
    func showSheetAlert(type:Int, tittle:String, content:String, okBtb:String, noBtn:String) {
        
        /*
        // -----------------------------------------
        [showSheetAlert 메소드 설명]
        // -----------------------------------------
        1. Alert Sheet 표시 팝업창 수행 메소드
        // -----------------------------------------
        2. type 속성 값 정리 :
           - type == 0 : 일반 알림 표시
        // -----------------------------------------
        3. 호출 방법 :
         // [팝업창 표시 수행 실시]
         self.showSheetAlert(
             type: 0,
             tittle: S_FinalData.AL_TITLE,
             content: "내용 입니다",
             okBtb: S_FinalData.AL_OK,
             noBtn: S_FinalData.AL_NO
         )
        // -----------------------------------------
        */
        
        // [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
        DispatchQueue.main.async {
            print("")
            print("====================================")
            print("[C_Ui_View >> showSheetAlert() :: 팝업창 표시 수행 실시]")
            print("-------------------------------")
            print("type :: ", type)
            print("-------------------------------")
            print("tittle :: ", tittle)
            print("-------------------------------")
            print("content :: ", content)
            print("-------------------------------")
            print("okBtb :: ", okBtb)
            print("-------------------------------")
            print("noBtn :: ", noBtn)
            print("====================================")
            print("")
            
            
            // [UIAlertController 객체 정의 실시]
            let alert = UIAlertController(
                title: tittle + "\n",
                message: content + "\n",
                preferredStyle: UIAlertController.Style.actionSheet
            )
            
            
            // [인풋으로 들어온 확인 버튼이 nil 아닌 경우]
            if(okBtb != "" && okBtb.count>0){
                let okAction = UIAlertAction(title: okBtb, style: .default) { (action) in
                    // -----------------------------------------
                    // [확인 버튼 클릭 이벤트 내용 정의 실시]
                    // -----------------------------------------
                    if type == 0 {
                        // [일반 팝업창 알림]
                    }
                    // -----------------------------------------
                    return
                }
                // [버튼 클릭 이벤트 객체 연결]
                alert.addAction(okAction)
            }
            
            
            // [인풋으로 들어온 취소 버튼이 nil 아닌 경우]
            if(noBtn != "" && noBtn.count>0){
                let noAction = UIAlertAction(title: noBtn, style: .cancel) { (action) in
                    // [취소 버튼 클릭 이벤트 내용 정의 실시]
                    return
                }
                // [버튼 클릭 이벤트 객체 연결]
                alert.addAction(noAction)
            }
            
            
            // [alert 팝업창 활성 실시]
            self.present(alert, animated: false, completion: nil)
        }
    }


} // [extension 종료]

 

반응형
Comments