SwiftUI/SwiftUI 문법 8

[SwiftUI] @AppStorage 알아보기

보통은 앱을 껐다키면 앱에 저장된 데이터들을 따로 저장하지 않는 이상 사라지게 된다. SwiftUI 에서는 UserDefaults 를 통해 간단한 데이터를 앱을 삭제하지 않는 이상 저장할 수 있도록 지원한다. 이 UserDefaults 를 사용하는 방법 중 하나가 @AppStorage 이다. 이름부터 뭔가 앱에 저장을 해줄 것 같은 느낌이 난다. @AppStorage 사용방법은 정말 간단하다. @AppStorage("name") var userName: String? 형식으로 사용해 주면 된다. "name" 이라는 키로 userName 의 값을 저장한다는 뜻이다. 타입에서 String? 처럼 옵셔널 String 을 사용해 주는 이유는 처음에는 저장하는 값이 없기 때문이다. 초기값을 지정해 준다면 @App..

[SwiftUI] @FocusState 알아보기

@FocusState 는 아주 간단하다. 말 그대로 Focus 되어있는지 안되어 있는지를 관리한다. 보통 TextField 를 만들게 되면 유저들이 text 를 써넣을 때 클릭해야 하는데 @FocusState 를 활용하면 자동으로 선택되어 있게 만들 수 있다. TextField 만들기 우선 @FocusState 를 사용하기 위해서는 TextField 를 만들어 줘야 한다. 아래와 같은 코드로 간단한 TextField 를 만들어 보았다. 이제 간단하다 @FocusState 를 통해 Bool 타입의 textFocus 변수를 선언해 주고, 해당되는 TextField 앞에 .focused($textFocus) 를 입력해 주면 된다. 이제 textFocus 라는 변수는 TextField 가 선택되면 true 값이..

[SwiftUI] @EnvironmentObject 알아보기

SwiftUI 에서는 많은 변수들을 사용하게 된다. 그리고 뷰간에 많은 데이터가 오가게 될 것이다. 또한 어떠한 데이터는 앱 전체에 사용된다. 이때 유용한 것이 @EnvironmentObject 이다. 시작하기에 앞서 코드는 아래에서 설명했을 때 쓴 코드를 사용할 것이다, [SwiftUI] @Published, @ObservedObject 알아보기 시작하기에 앞서... 이 글은 @Published, @ObservedObject 을 아주~ 간단하게 설명한 글이다. 기본적인 것부터 알아두고 심도있게 들어가는것이 맞는 것 같다. (Combine 프레임워크, ViewModel... 등 공부가 필 codingnest.tistory.com @EnvironmentObject @EnvironmentObject 도 Ob..

[SwiftUI] @StateObject 알아보기

앞에서 @Published, @ObservedObject 를 공부했다. 그것과 바로 이어지는 것이 @StateObject 이다. [SwiftUI] @Published, @ObservedObject 알아보기 시작하기에 앞서... 이 글은 @Published, @ObservedObject 을 아주~ 간단하게 설명한 글이다. 기본적인 것부터 알아두고 심도있게 들어가는것이 맞는 것 같다. (Combine 프레임워크, ViewModel... 등 공부가 필 codingnest.tistory.com @ObservedObject 의 문제점 @Published 로 선언된 변수가 변경될 때 뷰를 자동으로 업데이트시켜주지만 문제가 있다. 화면 자체가 다시 업데이트된다면 변수는 초기화된다. 이게 무슨 소리인지 헷갈릴 것이다...

[SwiftUI] @Published, @ObservedObject 알아보기

시작하기에 앞서... 이 글은 @Published, @ObservedObject 을 아주~ 간단하게 설명한 글이다. 기본적인 것부터 알아두고 심도있게 들어가는것이 맞는 것 같다. (Combine 프레임워크, ViewModel... 등 공부가 필요하다) @Published 우선 @Published 에 대해서 간단하게 설명해보자. 우선 단어에 답이 있다. Publish 라는 단어의 뜻은 출판, 발행하다라는 뜻이 있다. @Published 를 통해 선언한 변수는 어딘가에 발행하거나 알려주는 그런 역할을 한다는 느낌? 을 가지면 좋다. 그렇다면 한번 코드를 통해 예시를 보자. 아래와 같이 Count 라는 class 를 만들어 주었다. 이 클래스는 count 라는 변수를 선언하고, plus() 라는 함수는 cou..

[SwiftUI] @Binding 알아보기

@Binding 이라는 Property Wrapper 에 대해서 알아보자. @Binding 은 @State 와 연결시켜 주는 역할을 한다. @State 는 간단하게 이야기하면 변경값에 따라 뷰를 업데이트시켜 주는 친구이다. 자세한 내용은 아래를 참고하면 좋다 :) [SwiftUI] @State 자세히 알아보기 SwiftUI를 쓰다 보면 @State를 변수 선언할 때 자주 쓰게 된다. 그렇다면 이 @State는 뭘까? 결론부터 이야기하자면 Property wrapper라고 한다. 속성을 감싼다고? 이게 무슨 뜻이지 또? Property wrapper? @State va codingnest.tistory.com 결론은 @Binding 은 값을 다른뷰로 전달하고 그 값을 변경할 수 있는 property wra..

[SwiftUI] @State 알아보기

SwiftUI를 쓰다 보면 @State를 변수 선언할 때 자주 쓰게 된다. 그렇다면 이 @State는 뭘까? 결론부터 이야기하자면 Property wrapper라고 한다. 속성을 감싼다고? 이게 무슨 뜻이지 또? Property wrapper? @State var number: Int = 0 SwiftUI에서는 변수를 선언할 때 아래와 같이 선언을 하게 된다. number는 var 키워드를 사용하여 변수(variable)로 선언되었고, Int 데이터 타입(data type)을 가지며, 초기값으로 0을 가진다. 그리고 @State는 number라는 속성(property)을 상태(State)로 감싸(wrapping) 준다. Swift에서 속성(property)은 클래스(class), 구조체(struct), ..

[SwiftUI] SwiftUI 기본 구성 ContentView

Playground나 Xcode로 SwiftUI파일을 만들게 된다면 처음으로 보게 되는 화면이 있을 것이다. 바로 아래와 같은 화면이다. struct ContentView: View { var body: some View { Text("Hello, World!") } } 항상 그냥 지나치지만 과연 이 코드들? 뭘까? 간단하게 뜯어보도록 하겠다. struct ContentView: View struct 키워드를 사용하여 구조체를 선언하고, ContentView라는 이름을 가지며, View 프로토콜을 따르는 타입이다. 벌써부터 복잡해진다. 구조체? 프로토콜? ContentView라는 이름을 가진다는 것 밖에 이해를 못 하겠다. 구조체 선언? 구조체란 Swift에서 데이터 타입을 정의하는 방법이다. struc..