개발
-
Rx + TableView(CollectionView) 바인딩 안되는 오류 해결방법개발/Swift 2023. 3. 21. 18:25
1. TableView에서 발생 (제약조건) dataSubject.bind(to: tableView.rx.items) { tableView, row, element in print("Test") return UITableViewCell() }.disposed(by: disposeBag) dataSubjecgt에 값을 아무리 집어 넣어도 위의 셀을 리턴하는 클로저가 호출이 계속안됨 tableView.register(IDIntergrationAuthCell.self, forCellReuseIdentifier: IDIntergrationAuthCell.id) tableView.rx.setDelegate(self).disposed(by: disposeBag) 레지스터와 delegate 모두 빠지지 않은 상태 (..
-
[Swift] 직접 UITableView를 구현하기개발/Swift 2023. 1. 12. 17:04
스크롤 구현 방식 스크롤을 구현하기 위해 UIstackView를 통해 UI들을 집어넣고 UIPanGesture를 통해 터치이벤트를 받아 스크롤을 구현 했습니다. for i in 1.. UIImageView? { guard let image = UIImage(named: "image\\(index)") else {return nil} let imageView = UIImageView(image: image) imageView.translatesAutoresizingMaskIntoConstraints = false imageView.heightAnchor.constraint(equalToConstant: cellHeight).isActive = true return imageView } init에서 초기 1..
-
[Swift] 다양한 데이터 타입 동적으로 Decoding 하기개발/Swift 2023. 1. 9. 17:55
위 데이터 처럼 하나의 리스트에 다른 타입의 데이터를 받아오는 경우가 있다. 이때 해당 데이터를 디코딩할때 문제를 겪게된다. 해결 할수 있는 방법은 위와 같이 모든 프로퍼티들을 옵셔널하게 주는 방법이 있다. 그러면 디코딩 한 결과는 옵셔널 하며 데이터 혹은 nil 이 들어갈것이다. 이런 경우 문제점은 프로퍼티가 모두 옵셔널 하기 때문에 언래핑을 꼭 해줘야 한다는것이다. 더 좋은 방식은 해당 타입을 나누어 다른 타입으로 구현해내는 것이다. 어느 방식으로든 분기를 태워서 A타입, B타입으로 나누어 필요한 프로퍼티만 설정해주는것이다. enum CellItem: Decodable , Hashable{ case company(Company) case horizontal(Horizontal) case none en..
-
외부 영역 터치시 키보드 사라지게 하는방법 in TableView개발/Swift 2022. 12. 5. 14:22
키보드를 입력중에 다른 영역을 터치하면 키보드가 사라지기를 원할수 있다. 이때 가장 쉬운 방법으로 이렇게 구현한다 //VC private func setDismissKeyboardEvent() { let gesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard)) self.view.addGestureRecognizer(gesture) } @objc private func dismissKeyboard() { self.view.endEditing(true) } Viewcontroller의 뷰에 제스처를 부여해서 endEditing을 호출하면 키보드가 알아서 껒여준다. 그런데 여기서 문제점이 있다. 만약 view 안에 테이..
-
Compositional Layout + Diffable DataSource - 2 헤더 추가하기개발/Swift 2022. 11. 27. 15:35
헤더 추가하기 우선 새로운 타입 sqaure carousel 섹션을 추가했다. 여기서는 새로운 타입의 아이템을 넣어줬다. enum Item: Hashable { case banner(HomeItem) case normalCarousel(HomeItem) case squareCarousel(RestaurantItem) } struct RestaurantItem: Hashable { let name: String let reviewPoint: Float let reviewCount: Int let imageUrl: String } 이러면 데이터소스에 넣어줄때 RestaurantItem 타입을 넣어주고 cell 그릴때 RestaurantItem 타입의 데이터를 받아 사용할수 있다. //스냅샷 부분 snapsh..
-
[Swift] Compositional Layout - DiffableDataSource 와 함께 사용개발/Swift 2022. 11. 23. 17:00
Modern Collection View 와 MVVM 패턴 가이드 [iOS] Swift Modern Collection View & MVVM 패턴 가이드 강의 - 인프런 MVVM 패턴과 Modern Collection View를 사용해 네트워킹을 구현하고, 다양하고 동적인 Collection View를 자유자재로 다룰 수 있게 됩니다., Swift iOS UI, 제대로 다루는 핵심 기술! 📲 iOS Swift 레이아웃 구현을 www.inflearn.com 기존 datasource 구조에서 data controller 와 UI 가 상호작용하면 서 collectionview가 구성되는데 시간이 지남에따라 외부적인 변동으로 인해 controller가 가진 “Truth”와 UI가 가진 “Truth”가 맞지 않게..
-
[Swift] Compositional Layout - 헤더, 다양한 layout적용개발/Swift 2022. 11. 23. 15:16
Modern Collection View 와 MVVM 패턴 가이드 [iOS] Swift Modern Collection View & MVVM 패턴 가이드 강의 - 인프런 MVVM 패턴과 Modern Collection View를 사용해 네트워킹을 구현하고, 다양하고 동적인 Collection View를 자유자재로 다룰 수 있게 됩니다., Swift iOS UI, 제대로 다루는 핵심 기술! 📲 iOS Swift 레이아웃 구현을 www.inflearn.com 헤더 추가하기 헤더를 추가하기 위해 다음작업들이 필요하다 헤더 구현( UICollectionReusableView ) 헤더 레지스터 헤더를 데이터소스에 추가 헤더를 레이아웃에 추가 헤더를 레지스터하는 방법은 cell레지스터와 비슷하다 collection..
-
[Swift] Compositional Layout - 레이아웃 그려보기개발/Swift 2022. 11. 22. 16:45
Modern Collection View 와 MVVM 패턴 가이드 다양한 사이즈 형태의 collection view를 구현 하기 위해 Group을 잘 짜줘야 한다. let group = NSCollectionLayoutGroup.vertical( layoutSize: NSCollectionLayoutSize( widthDimension: .fractionalWidth(1.0), heightDimension: .fractionalWidth(16/9)), subitems: [다양한 그룹들]) (각 그룹들의 높이는 고정값으로 지정했으니 무시) 위 그룹의 subItems 안에 다양한 타입의 그룹이 들어갈것이고 해당 그룹들은 vertical 하게 들어갈것이다. 다음 예시를 통해 여러 타입의 collectionvi..