일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Refactoring
- clean architecture
- rxswift
- Observable
- SWIFT
- 리팩토링
- swiftUI
- 클린 코드
- collectionview
- MVVM
- Clean Code
- combine
- Human interface guide
- HIG
- ios
- map
- 애니메이션
- RxCocoa
- Protocol
- swift documentation
- UICollectionView
- Xcode
- 리펙터링
- ribs
- tableView
- 스위프트
- uitableview
- UITextView
- 리펙토링
- uiscrollview
- Today
- Total
목록@state (7)
김종권의 iOS 앱 개발 알아가기
@State 사용 케이스@State는 뷰에서 접근하는 프로퍼티struct ContentView: View { @State private var inputText = "" @State private var onAppear = false var body: some View { VStack { TextField(text: $inputText) { Text("placeholder...") } .onAppear { onAppear = true } if onAppear { Text(..
@State 프로퍼티@State를 붙인 프로퍼티의 값이 변경되면 자동으로 이것을 사용하고 있는 뷰들이 다시 그려는 기능* 뷰들이 다시 그려는 기능: 해당 뷰가 다시 그려질 때 init도 다시 호출되는것을 주의@State var text = ""var body: some View { Text(text)}@State 사용 시 주의사항@State의 용도는 View내부에서 프로퍼티를 변경시킬때만 사용해야함init이나 메소드에서 @State를 변경해도 @State값이 변경되지 않음ex) init에서 text를 초기화해주어도 text값이 변경되지 않음struct ContentView: View { var body: some View { VStack { ChildView(t..
ObservableObjec, @Published, objectWillChanged 개념ObservableObject는 옵저빙 될 수 있는 모델을 의미옵저빙 된다는 의미는 값이 변경되었을때, 이 모델을 옵저빙하고 있는 대상에게 알림을 주는 것변경된다는 기준은 @Publihsed 키워드로 선언된 프로퍼티가 변경되었을때 알림을 줌@Published를 사용하면 objectWillChanged라는 내부 프로퍼티에 send()를 날리는 것과 동일class User: ObservableObject { let name = "name" /// @Published: 변경되었다는 기준이 될 property에 선언 @Published var score = 0 /* objectWil..
@State를 사용하면 mutating 없이도 사용이 가능아래처럼 @State를 프로퍼티에 붙여서 사용하면 change()함수에서 mutating 키워드가 없더라도 문제없이 동작struct MyStruct { @State var val = 0 func change() { val = 0 }}struct이기 때문에 값을 변경하려면 원래 mutating키워드가 필요하지만 @State를 사용하면 mutating 없이 사용이 가능struct MyStruct { var a1 = 0 func change() { a1 = 2 // Cannot assign to property: 'self' is immutable }}computed property..
@State, @Bindable 이란?@State 개념양방향 바인딩 (프로퍼티 뷰)@State는 Property wrapper로 구현되었으며 뷰의 상태를 표시해줄 목적으로 있는 키워드이 키워드로 프로퍼티를 선언하고 이 키워드를 뷰에 입력해주면, 이 프로퍼티가 변경되면 자동으로 뷰도 변경됨ex) string이라는 프로퍼티를 @State로 선언하고, 이 프로퍼티를 Text(string)으로 Text 뷰에 넣어준 후, string 프로퍼티 값을 변경해주면 자동으로 Text뷰에 반영됨import SwiftUIstruct ContentView: View { @State var string = "..." var body: some View { VStac..
1. List 형태 UI - @State를 활용하여 로딩 상태, 로드 상태, 실패 상태 띄우기 2. List 형태 UI - pull to refresh, 페이지네이션 구현 방법 (List, refreshable, pagination, @Sendable) 3. List 형태 UI - 검색된 결과 UI에 보여지게 하는 방법 (searchable) 상태 처리 핵심 개념 - @State List형태의 UI를 구현하면 항상 로딩, 성공, 실패에 따라 UI를 다르게 보여주어야 하는데 이 때 SwiftUI의 @State를 활용하면 매우 쉽고 빠르게 구현이 가능 enum으로 로딩, 성공, 실패에 관한 정의를 하고 이 enum 타입의 프로퍼티를 @State로 선언하면 쉽게 상태 관리가 가능 목표) @State로 3가지 ..
@State View를 상속받는 뷰에서, 값을 변경할때 사용하는 프로퍼티 어노테이션 @State var n = 0 내부 구현부는 propertyWrapper를 사용한 형태 ex) @State를 붙이지 않은 경우 컴파일 에러 발생 struct ContentView: View { var n = 0 var body: some View { VStack { Text("\(n)") Button("Tap!!") { n += 1 // Error: Left side of mutating operator isn't mutable: 'self' is immutable } } } } ex) @State를 프로퍼티 앞에 붙일 경우 컴파일 에러 해결 struct ContentView: View { @State var n = 0 //