MVVM 란? Model-View-ViewModel로 구성된 아키텍처 패턴 중 하나로, 데이터를 처리하는 모델(Model), 사용자에게 보여지는 UI인 뷰(View), 뷰에 바인딩되어 모델과 뷰 사이를 이어주는 뷰-모델(View Model)로 분리한 패턴이다. 특징으로 Model과 View뿐만 아니라 Binding을 통하여 View와 View Model 간의 의존성까지 최소한 형태로, 데이터 처리 로직과 UI 간 상호 영향이 적어 모듈화를 통해 재사용성을 높이고 및 역할별로 Unit Test가 용이해진다. 대신 설계가 복잡하고 간단한 프로젝트에서는 View Model 설계가 오히려 능률이 떨어질 수 있다. 또한 Data Binding의 과정이 메모리효율이 안 좋다고 한다. 참고 위키 📚 Model 데이터..
이번글은 스토리보드 대신 코드로 작성할 때 내비게이션 바의 모양 및 기타 설정 관련한 일종의 Cheat Sheet을 써보겠습니다. 설명은 이전글 [iOS/Swift] UINavigationController 살펴보기 를 참고해 주세요. UINavigationController 생성 방법 UINavigationBar를 사용하기 위해선 일단 UINavigationController를 생성해야 됩니다. SceneDelegate에서 작성 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (scene ..
UINavigationController의 동작 방식 내비게이션 컨트롤러란 계층으로 구성된 스택 기반의 뷰 컨트롤러입니다. 아이폰 유저라면 이미 모두 한 번쯤은 이미 사용해 봤을 거예요. 그림을 보며 동작방식을 이해를 해봅시다. 처음 보이는 [Setting 컨트롤러]는 Root View 컨트롤러입니다. [Setting 컨트롤러]에서 General을 선택하면, 대리자를 통하여 재정의한 push 동작에 의해 새로운 [General 뷰 컨트롤러]를 생성하고 [Setting 뷰 컨트롤러] 위에다 쌓는 형식이죠. 스택을 어떻게 쌓는지 간단히 알아봅시다. (push or show) 내비게이션 스택은 순서가 필요하니 배열을 사용합니다. 배열 viewControllers내부에 뷰 컨트롤러들을 저장하죠. 내비게이션 스택..
Delegate Delegate 단어의 뜻 사전적 의미로 위임하다, 대리자라는 뜻을 갖고 있습니다. 객체 지향 프로그래밍에서 쉽게 말해서 델리게이트 패턴은 하나의 객체가 모든 일을 처리하는 것이 아니라 처리해야 할 일 중 일부를 다른 객체에게 위임한다는 거죠. 즉, 객체와 객체 간 쌍방향 커뮤니케이션의 방법입니다. Delegate 패턴은 데이터 전달 혹은 작업을 하는 데 처리하는데 있어 작업이 많아 원래 일을 처리해야 할 녀석이 아닌 다른 컨트롤러에게 대신 수행하도록 시키는 것이죠! 장점 프로토콜 사용으로 뛰어난 재사용성. 프로토콜에 필요한 메소드들이 명확하게 명시되며 정보 전달도 가능. 객체 지향 프로그래밍을 따름. (처리할 일의 일부를 다른 객체에게 위임함) 로직의 흐름을 따라가기 쉬움. 단점 많은 ..
텍스트 필드 여러 설정들 UI 관련 textField.frame.size.height = 22 // 프레임 높이 textField.borderStyle = .roundedRect // 테두리 스타일 textField.autocorrectionType = .no // 자동 수정 활성화 여부 textField.spellCheckingType = .no // 맞춤법 검사 활성화 여부 textField.autocapitalizationType = .none // 자동 대문자 활성화 여부 textField.placeholder = "이메일 입력" // 플레이스 홀더 textField.clearButtonMode = .always // 입력내용 한번에 지우는 x버튼(오른쪽) textField.clearsOnBegi..