[SwiftUI 스터디 기록] List, NavigationView, ScrollView, Toggle, Button, Combine관련

Doogie·2022년 11월 24일
0

1-2 BuildingListsAndNavigation

  • list

    • UIKit의 tableViwe
    • datasource같은 걸 따로 설정해 줄 필요도 없이 그냥 어떤 배열만 넘겨주면 알아서 만들어줘서 좀 충격;;
    • cell을 눌렀을 때 어떤 화면으로 이동하거나 하려면 아래에서 말하는 navigationView를 통해 안에서 설정해주면 됨
    • \.self 모 어쩌고로 해서 판단할건지 아니면 Identifiable 을 채택하고 id 프로퍼티 만들어서 구분해 줄건지 정해줘야하는데 다른 개발자분 말에 따르면 Identifiable를 채택 안하고 그냥 이용했을 때 중복 data에 대해 의도한 대로 표시되지 않는 경우가 있어 Identifiable을 주로 사용하신다고 한다
  • NavigationView

    • UIKit에서 NavigationController와 같이 Push,Pop등을 할 수 있는 기능을 함
    • NavigationView안에서 NavigationLink의 destination을 통해 어떤 화면으로 이동할지를 정하는 push같은 역할을 하고, label을 cell에 어떻게 표시해줄지를 정하는 듯..?

- List & NavigationView 코드

struct LandmarkList: View {
    var body: some View {
        NavigationView {
            List (landmarks) { landmark in
                NavigationLink {
                    LandmarkDetail(landmark: landmark)
                } label: {
                    LandmarkRow(landmark: landmark)
                }

            }
            .listStyle(.inset)
            .navigationTitle("Landmarks")
            .navigationBarTitleDisplayMode(.large)
        }
    }
}
  • ScrollView
    • 스크롤뷰는 뭐 이것저것 설정해줄 필요 없이 그냥 ScrollView{} 로 감싸면 끝이어서 이것도 충격...

이 외에 MapKit도 다뤘는데 솔직히 스유를 익히는 단계에서 나에게 필요한 내용은 아니고 추 후 필요하다면 다시 공부할 수 있기에 정리는 안함


1-3 HandlingUserInput

  • Toggle

    • UIKit의 switch같은 역할
    • isOn이라는 매개변수에 @State로 선언된 bool값을 전달하면 토글 여부에 따라 해당 bool값이 자동으로 변함
    • List내부에 추가하면 자동으로 header부분에 추가됨
  • Button

    • 이런식으로 선언 가능한데 action에는 버튼이 눌렸을 때 할 행동을, label에는 이미지나 타이틀 같은걸 넣으면 된다

Combine관련

  • @State -> rx의 옵저버블 같은 느낌
  • @EnvironmentObject -> 얘도 옵저버블 같은 느낌인데 어디서나 접근 할 수 있는 뭐 그런?
  • @Binding -> rx의 구독 같은 느낌
  • @Published -> 얘도 옵저버블 같은 느낌인데...
  • @ObservableObject -> 옵저버블이 있는 객체이다 뭐 이런걸 명시하는 느낌...?

근데 진짜 너무 아예 처음 들어보는 내용이다 보니까 좀 더 써봐야 감이 잡힐 것 같고 공부도 더 해야겠다

profile
끊임없이 문을 여는 개발자

0개의 댓글