JPApexPredators (2)
Navigation Stack 사용 이제는 Navigation Stack을 사용하여 각 공룡에 대한 cell을 탭했을때 다음 화면으로 넘어가게 해보자 이미 많이 사용해봤지만 간단하다. 현재는 List가 ContentView안에서 제일 상위 View인데 이 List를 NavigationStack이 감싸주면 된다. struct ContentView:...
Navigation Stack 사용 이제는 Navigation Stack을 사용하여 각 공룡에 대한 cell을 탭했을때 다음 화면으로 넘어가게 해보자 이미 많이 사용해봤지만 간단하다. 현재는 List가 ContentView안에서 제일 상위 View인데 이 List를 NavigationStack이 감싸주면 된다. struct ContentView:...
새로운 프로젝트를 시작해본다. 기본적인 부분과 이미 알고있던 부분은 패스하거나 간략하게 서술할 예정 Json파일과 동일하게 구조체 만들기 이건 워낙 api나 json 파일을 사용하면서 많이 해보았기에 내용은 패스 struct ApexPredator: Decodable { let id: Int let name: String ...
modifier 정리 및 추가 문제 수정 를 보면 알겠지만 값이 입력된 상태에서 Currency를 바꾸면 값이 변경되지 않는다. 이제 이부분을 보완해본다. 우선 sheet가 있는 부분에 text field의 onchange modifier를 옮겨주고 .onChange(of: leftAmount) { if leftTyping { ...
Grid 부분 별도로 추출 이전글에서 최종 코드로 적었던 부분을 IconGrid로 별도의 View로 만들어 준다. 코드의 간소화를 위함이다. struct SelectCurrency: View { // 생략 var body: some View { ZStack { // 생략 VStack...
해당 강의를 잊고 있다가 마무리를 짓기 위해 작성한다. 지난글에 이어 몇달만에 다시하는 건지는 몰라도 내용자체는 어렵지 않기에 마무리를 짓는다. SelectCurrency View 만들기 위와 같은 View를 만들기위해 구상은 다음과 같이 한다. struct SelectCurrency: View { var body: some...
LocationDetailView 기능 추가하기 ViewModel을 하나 더 만들어 준다. 그리고 LocationDetailView에 있던 변수들을 ViewModel에 옮겨준다. let columns = [GridItem(.flexible()), GridItem(.flexible()), G...
LoadingView 만들기 이전에는 ProgresHUD Library를 통해서 로딩하는 것을 표현했는데, 여기서는 별도의 View를 만들어서 관리한다. struct LoadingView: View { var body: some View { ZStack { Color(.systemBackground) ...
Record 값 가져오기 이전글에서 Cloud에 등록을 했는데, 이젠 등록한 값을 가져오는 작업을 해보자. getProfile이라는 함수를 만들어 주었다. func getProfile() { CKContainer.default().fetchUserRecordID { recordID, error in guard let reco...
Profile Validation 프로필을 설정할때 유효성검사를 위해 함수를 만들어 준다. func isValidProfile() -> Bool { guard !firstName.isEmpty, !lastName.isEmpty, !companyName.isEmpty, ...
Profile 설정 화면 보강하기 첫번째 글에서 만들었던 프로필 설정 화면을 더 보완해보도록 한다. AvatarView 수정 struct AvatarView: View { var image: UIImage // new var size: CGFloat var body: some View { Im...