TableView, CollectionView 에서 Delegate 사용iOS 13+ 부터 가능함!TableView or CollectionView는 따로 만들었다는 가정하에 Delegate를 사용하는 법만 확인 UITableViewDelegate or UICollectionViewDelegate에 있는 contextMenuConfigurationForItemsAt 함수를 정의해 만들 수 있다. 예제는 CollectionView지만 TableView도 동일하게 사용이 가능함!extension HomeViewController: UICollectionViewDelegate { func collectionView(_ collectionView: UICollectionView, contextMenuCon..
지금까지 RxSwift를 이용한 MVVM구조를 공부하고 적용해본적이 몇 번 있는데, Input Output 처럼 템플릿을 어느정도 만들어 놓고 사용할 수는 있지만 제대로 된 템플릿이 있지는 않다보니 항상 개발하면서 바인딩 하나하나 고민하고 검색을 하며 개발을 했었다.사실 MVVM 구조를 많이 개발 안해본것이 가장 큰 문제겠지만, RxSwift 역시 익숙치 않아 항상 개발하며 많은 시간이 걸렸다...그러던 중 RxSwift를 어느정도 써보면서 템플릿화 된 ReactorKit도 해보는게 어떻냐는 추천을 받았었다.이름을 들어본 회사에서 기술스택에 포함되어 있는것을 봤어서 한 번 적용해보자! 라는 마음으로, iOS를 처음 시작했을때 패캠 강의를 다 보고 만들어 출시한 앱을 ReactorKit으로 구조를 변경해보..
이번에는 간단하게 변경한 UI 2가지를 정리하려고 한다.TableView 무한 스크롤의 경우 구현 한 적이 있었지만, 최신곡, 인기곡 등 그렇게 버거울 정도의 데이터가 한번에 들어오는게 아니여서 그냥 한번에 데이터를 불러와 보여줬었지만노래 검색의 경우 "사랑" 단어를 포함한 노래만 4만곡 이상을 넘어가는 것으로 기억한다. 이것 때문이라도 페이징으로 데이터를 불러와야 할 거 같아 수정했다.TextField+UIDatePicker는 최신곡 조회 기능에 날짜를 선택하기위해 사용했었는데, DatePicker에 연, 월 만 선택하는 걸 원했지만 당시에 왜 속성이 없지? 하면서 그냥 Date 전체를 선택할 수 있게 했던게 아쉬워서 수정하게 됐다.수정을 위해 좀 알아보던 중 datePickerMode에 yearAnd..
iOS 강의를 다 듣고 바로 만들어서 배포해 본 앱이 있는데,, 이번에 다시 보니 정말 배웠던거 그대로 다 넣느라고 이상한게 많아서 수정하면서 정리를 하기로 했다.앱의 기능 중 맘에 드는 곡을 북마크 하면 따로 애창곡 리스트로 볼 수 있는 기능이 있는데, 당시에 UserDefaults를 알게되고 아! 이게 iOS에서 DB처럼 쓰는거구나! 하면서 그냥 사용했다.그러다 옛날 블로그 포스팅으로도 있지만 CoreData 존재를 알고나서 보니 멍청한 짓을 한 거 같아서 이것부터 수정하기로 했다.일단 둘의 차이점을 먼저 알아보자면UserDefaults는 App Setting 정보 같은 간단한 정보를 저장하기에 적합하고CoreData는 복잡하고 큰 데이터를 저장하기 적합하다.CoreData를 데이터베이스 자체로 알고..
Diffable Data Source?Diffable DataSource는 WWDC 19에 발표되었고, IOS 13 이상 부터 사용가능하다.TableView, CollectionView의 DataSource에서 개선된 것임으로 둘 다 적용이 가능하다.변경된 Data를 적용해야 할 때 그냥 reloadData를 써버리거나, performBatchUpdates로 애니메이션 까지 신경쓰며 갱신을 해 줬지만, Diffable DataSource를 사용하면 첫 설정에 UI에 대한 설정 말고는 데이터가 변할 때 마다 apply만 해 주면 알아서 애니메이션 까지 자연스럽게 적용할 수 있다.적용하기먼저 결과 화면먼저 스토리 보드를 사용해 collectionView를 추가했다.Diffable DataSource를 사용하..
참고한 유튜브 자료MVVM 아키텍처를 처음 공부했을 땐 RxSwift로 시작을 했었는데, Combine을 알고 나서 UIKit에서 Combine으로 MVVM을 할 수 있지 않을까 라는 생각에 찾아보고 시도해봤다.유튜브 예제는 통신 예제에 버튼을 누르면 랜덤한 글이 나오게 하는 것이고, 내가 한 건 로그인 화면을 구현한 것이다.프로젝트 세팅은 Storyboard로 진행했고 Combine을 제외한 라이브러리는 사용하지 않았다.간단한 로그인 회원가입 화면을 만들고 MVVM을 적용해봤다.final class SignInViewController: UIViewController, UITextFieldDelegate { @IBOutlet weak var signInButton: UIButton! ..