전체글167 [SwiftUI Project] 당겨서 새로고침 Pull to Refresh 이번에는 당겨서 새로고침을 만들었습니다. 만들어야 하는 기능의 목표에 부합하는 자료를 찾기 힘들어서 생각보다 시간을 꽤 소요했던 작업이었습니다. 목표했던 기능은 다음과 같습니다. 당기면 ProgressView가 보이며 네트워크 다운로드 작업이 호출됩니다. Coingecko의 OpenAPI의 분당 요청 제한은 10~50회 이므로 유저의 무분별한 새로고침을 방지해야 했습니다. 트위터, 유튜브의 새로고침 ProgressView가 보여지는 시간은 너무 빠르지도 느리지도 않는 0.5초 정도 입니다. 이와 같은 사용자 경험을 만들고 싶었습니다. 구현한 기능은 다음과 같습니다. 당기면 네트워크 요청이 실행됩니다. @State var ifRefeshing = false 일 때만 네트워크 작업이 진행됩니다. 네트워크 작.. 2022. 10. 3. XCode 아무런 에러 없이 빌드가 멈출 때 확인 할 것 진행하던 프로젝트의 시뮬레이터 빌드가 갑자기 되지 않는 문제가 발생했었습니다. 방금 전까지 잘 되던 빌드인데 아무런 오류도 없이 빌드 진행률이 250/265 이렇게 멈춰버리는 현상이 있었는데요. 해결한 이후에 배운 것은 가장 최근에 수정한 코드를 의심해보라는 것이었습니다. 사진의 경로로 들어가면 오른쪽 화면에서 빌드 진행을 볼 수가 있는데요. Complie이 되지 않는 파일이 있었고, 그 파일을 잘 살펴봐서 잘못 된 부분을 찾을 수 있었습니다. 이번에 저의 경우는 삭제된 변수를 어떤 코드가 호출하고 있었기 때문에 컴파일이 진행 안되고 있었습니다. 해당 코드를 수정해주니 빌드가 정상적으로 진행되었습니다. 2022. 10. 3. [SwiftUI Project] HStack 빈 공간이 터치 안되는 문제 해결 HStack으로 사진과 같은 row를 만들었을 때 양 끝의 컨텐츠만 터치되고 가운데는 터치가 안되는 경우가 생깁니다. 백그라운드 색을 지정해주면서 해결할 수도 있지만, 만약 색을 설정할 수 없다면 다음과 같이 작성할 수 있습니다. .contentShape(Rectangle()) HStack(spacing: 0) { leftColumn Spacer() rightColmn } .padding() .contentShape(Rectangle()) 참고 블로그: SwiftUI touch영역 풀로 잡기 HStack 영역을 터치했을 때 액션을 구현하기 위해 HStack 안에 Image랑 Text를 넣고 HStack자체에 onTapGesture를 넣어주었다. VStack { Image(systemName: "perso.. 2022. 10. 2. [SwiftUI Project] LazyVStack 하이라이트 색 설정하기 List에서는 row를 터치했을 때 자동으로 하이라이트됩니다. 하지만 LazyVStack으로 리스트를 작성했을 때는 하이라이트가 적용되지 않습니다. Navigation Link의 리스트를 LazyVStack으로 생성했을 때 버튼 스타일을 지정해주면 하이라이트를 만들 수가 있습니다. 아래는 이번에 적용하며 참고한 글에서 가져온 코드입니다. import SwiftUI struct ContentView: View { private var names = ["Andy", "Steve", "Kevin", "David"] var body: some View { NavigationView { ScrollView { LazyVStack(alignment: .leading) { ForEach(names.sorted(), .. 2022. 10. 2. [SwiftUI Project] NavigationView가 강제로 dismiss 되는 문제 해결 검색화면에서 NavigationLink를 사용해서 detatil 화면으로 넘어갔을 때 문제가 있었다. 즐겨찾기 버튼을 눌렀을 때 화면이 강제로 dismiss 되는 문제였다. 검색해본 결과 NavigationLink를 두번 사용해서 발생한 버그인 것으로 추측된다. 왓치리스트 -> 검색화면 -> 디테일 화면 NavigationLink를 한번만 사용할 때는 문제가 없었다. 왓치리스트 -> 디테일화면 다음의 코드를 NavigionView에 작성해주니 해결되었다. NavigationView { content } .navigationViewStyle(StackNavigationViewStyle()) SwiftUI NavigationLink pops out by itself I have a simple use cas.. 2022. 10. 1. [SwiftUI Project] Core Data 즐겨찾기 기능 구현하기 이번에는 Cote Data로 즐겨찾기 기능을 구현하겠습니다. 작업의 흐름은 다음과 같았습니다. 1. Core Data를 사용하기 위해 Container 생성 2. CRUD 함수가 작성되는 WathlistDataService 생성 3. ViewModel에서 Core Data로부터 데이터를 받아오는 함수 생성 4. View에서 호출할 수 있도록 작성 1. Core Data를 사용하기 위해서 Container를 생성하고 모델을 만들어 줍니다. 2. Create, Read, Update, Delete 함수와 값이 저장될 변수들을 DataService 파일에 작성해줍니다. class WatchlistDataService { private let container: NSPersistentContainer priva.. 2022. 9. 28. 이전 1 ··· 7 8 9 10 11 12 13 ··· 28 다음