본문 바로가기

iOS 개발28

[iOS] MVC 구조의 앱을 MVVM 으로 바꾸기 raywenderlich - iOS MVVM Tutorial: Refactoring from MVC MVVM 으로 바꿀 때 장점 ViewController 가 단순해진다. Business logic 을 더 잘 표현 할 수 있다. ViewModel 이 ViewController 보다 테스트하기 쉽다. ViewModel? ViewController? MVVM 구조에서 ViewController 는 View 를 바꾸고 View 에서 받은 입력을 ViewModel 로 전달하는 일만 한다. 이 이외에 MVC 구조의 ViewController 가 하던 모든 일을 ViewModel 에게 전달할 것! ViewModel 은 View 입력을 받아 Model 갱신, Model 의 정보를 ViewController 에게 전달.. 2021. 6. 25.
[iOS] 최고의 디자인 패턴, MVC 에 대한 오해 https://medium.com/flawless-app-stories/the-only-viable-ios-architecture-c42f7b4c845d The only viable iOS architecture Deep dive into MVC, MVVM, MVP, VIPER as a result of which we’ll understand that for iOS there is only one possible among them. medium.com MVC Model 은 "data", View 는 유저가 보는 것, Controller 는 중개자 역할. Controller 는 Model 에서 데이터를 받아 View 를 통해 User 에게 보여주거나, User 의 동작을 View 에서 받아와 Model.. 2021. 6. 24.
[iOS/SwiftUI] Alignment Guides, Custom Alignment Alignment guides 부모 View 의 정렬 규칙이 아닌 자식 View 각각의 정렬 규칙을 따르고 싶을 때 사용한다. Stack 에 속한 View 들은 각각의 Alignment guide 를 갖는다. Stack 의 종류에 따라 수평, 수직의 중간 지점에 대한 정보가 계산되는데, 각 View 들은 자신이 속한 Stack의 중간 지점에 자신의 Alignment guide 를 맞춘다. 즉, 기본적으로 Center alignment 가 적용된다. 그런데 Stack 에 속한 일부 View 에 대해 다른 정렬 기준을 적용하고 싶다면 alignmentGuide modifier 를 사용하면 된다. HStack { Text("🌧") .alignmentGuide(VerticalAlignment.center) { .. 2021. 5. 13.
[iOS/SwiftUI] Lazy Stacks Lazy Stacks Stack View의 일종으로 아이템들이 화면에 렌더링 되는 순간에 생성된다. 미리 생성해 놓지 않아 메모리를 낭비하지 않는다. ScrollView { LazyVStack(alignment: .leading) { ForEach(1...100, id: \.self) { Text("Row \($0)") } } } List Swipe to delete, Reordering, Built-in style (Horizontal divider, Navigation mark) 등의 기능을 가진 Lazy Stack 의 일종이다. 즉, List 를 사용하는 경우 기본적으로 View 가 렌더링 되는 순간 생성되는 것이다. 2021. 5. 12.
[iOS/SwiftUI] 기초적인 Navigation 구현하기 NavigationView 사용하기 var body: some View { NavigationView { List(artworks) { artwork in // Add views to the navigation stack with NavigationLink. NavigationLink( destination: DetailView(artwork: artwork), label: { Text(artwork.title) }) } .listStyle(PlainListStyle()) // Notice that this modifier is for List. (Not NavigationView.) .navigationBarTitle("Artworks") } } Bool 변수를 toggle 해서 sheet 띄우기 Bo.. 2021. 4. 21.
[iOS/SwiftUI] ForEach 로 View 반복하기 (Identifiable protocol) Static View vs. Dynamic View Static View 는 SwiftUI 의 View 컴포넌트들을 하드 코드 해서 만드는 View 를 말한다. VStack 안에 TextField, Button 등을 작성한 View 를 예로 들 수 있다. Dynamic View 는 List 혹은 ForEach 를 통해 다수의 View 를 만드는 방식이다. View 를 추가, 제거 시에 몇 번째 View 에 생긴 변화인지 파악해야 하므로 각각을 구별할 수 있는 식별자(identifier) 가 필요하다. 식별자란 유일하게 혼자만 가지는 정보로, 하나의 식별자에 대해 하나의 대상만 존재하기 때문에 이를 통해 어떤 Item(View) 인지 파악할 수 있다. Identifiable protocol Identifi.. 2021. 4. 14.