IOS application/Swift

15. 이용약관 동의 페이지

개발자킹콩 2021. 5. 21. 14:39

약관에 대한 내용을 DatailType의 case분류를 통해 확장성을 높힌것 같아 자랑하고 싶어서 올린다.

 

이용약관 상세페이지를 보려면 페이지를 이동하게 된다.

각 페이지에 약관 데이터를 넣는 것은 같은 형식의 코드를 여러번 사용해서 비효율 적이다.

 

 

--> 약관동의에 대한 ViewModel로 데이터를 한번에 관리하고 어떤 case인지만 기재하면 된다.

--> 약관 명을 보고 동의하는 페이지와 약관 상세페이지에서 동의하는 페이지 모두 동의한 것을 동일하게 인지하게 위해 instance property 보다 type property로 이를 선언하는게 용이하다고 판단함.

 

정답은 아니겠지만 생각을하고 코드를 짠다는 점 칭찬해~~

 

 

class TermsOfServicesViewModel {
    enum DetailType {
        case first
        case second
        
        var detail: String {
            switch self {
            case .first:
                return TermsOfServicesViewModel.firstDetail
            case .second:
                return TermsOfServicesViewModel.secondDetail
            }
        }
    }
    
    var type: DetailType = .first
    
    func updateType(_ type: DetailType) {
        self.type = type
    }
    
    // 약관 페이지에서 동의 했을때 true가 된다.
    static var firstTermsOfServicesAgree: Bool = false
    static var secondTermsOfServicesAgree: Bool = false
    
    static let firstDetail: String = """
        이용약관동의??
        제1조(목적) 이 약관은 업체 회사의 샬라샬라~~
    """
    
    static let secondDetail: String = """
    	개인정보 동의사항??
    """
}