일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Protocol
- tableView
- ios
- MVVM
- 리펙토링
- rxswift
- 리팩토링
- ribs
- SWIFT
- 애니메이션
- uitableview
- collectionview
- swiftUI
- combine
- 클린 코드
- HIG
- RxCocoa
- Clean Code
- uiscrollview
- swift documentation
- 리펙터링
- Refactoring
- UITextView
- UICollectionView
- Xcode
- Human interface guide
- clean architecture
- Observable
- 스위프트
- map
- Today
- Total
목록tableView (21)
김종권의 iOS 앱 개발 알아가기
1. 이미지 캐싱, 이미지 효율적으로 로드 방법, 스크롤에 따라 이미지 로드(tableView, collectionView): scrollViewDidScroll, prefetch 2. 이미지 캐싱, 이미지 효율적으로 로드 방법(tableView, collectionView): async + NSCache cf) 애플 공식 문서에서 나온 ImageCache 방법은 여기 참고 처리 방법 2단계 scrollViewDidScroll, prefetch 방법으로 모든 페이지의 이미지를 한꺼번에 호출하지 않고 스크롤에 따라 page를 늘려나가며 API호출 > 이미지 url들을 획득 이미지 url들만 우선 cell의 모델에 적용 ImageCache를 통해서 url들에 대해서 이미지 로드 > cell의 item 모델 ..
1. 이미지 캐싱, 이미지 효율적으로 로드 방법, 스크롤에 따라 이미지 로드(tableView, collectionView): scrollViewDidScroll, prefetch 2. 이미지 캐싱, 이미지 효율적으로 로드 방법(tableView, collectionView): async + NSCache 아이디어 스크롤이 느려지고, 앱이 꺼지고 이미지들이 사용자에게 보여질 때 느려질 수 있으므로 캐시를 사용 비동기적으로 이미지를 저장하고 cache를 사용 어떻게? request(page:1) API 호출 > 10개의 이미지 url 획득 10개의 이미지 url만 cell의 model에 먼저 저장 (image는 따로 호출하여 반영) image는 최초 10개만 일단 로드하고, 나머지는 아래에서 나오는 내용인..
셀 업데이트 관련 메소드 메소드들은 실제 데이터를 바꾸는게 아닌 view만 변경하는것 Section 업데이트 Row 업데이트 tableView에서 전체 cell, section 업데이트 - reloadData() 해당 메소드를 호출 시 현재 보여지는 rows값들에 대해서만 레이아웃이 변경 주의: beginUpdates(), endUpdates() 사이에 행을 삽입하거나 삭제하는 메소드에서 reloadData()를 호출하면 안되는것을 주의 beginUpdates(), endUpdates() 내용 참고 cell에 관해 여러 작업이 필요한 경우 처리 방법 1번째 cell을 지우고, 2번째 셀을 변경하는 경우: 2번의 작업이므로 각각 tableView(_:numberOfRowsInSection:)에 변경되었다는..
CheckBoxCell 구현 isCheck라는 property가 있고, 이 property를 통해 check되면 체크 이미지를 업데이트하고 값을 가지고 있는 상태 // CheckboxCell.swift var isCheck: Bool = false { didSet { let imageName = isCheck ? "checkmark.square" : "checkmark.square.fill" checkBoxButton.setImage(UIImage(systemName: imageName), for: .normal) } } cell이 check되는지 확인은 UITableViewCell에서 제공하는 setSelected(:animated:)를 override하여 사용 // CheckboxCell.swift..
* URLSession 개념 참고 * NSCache 개념 참고 TableView에서 refresh시 데이터 요청 dataSource는 [AnyObject]형태 title과 같은 것은 dataSource안에 포함 되어 있지만 이미지같은 경우는 dataSource중 url link를 통해 이미지 획득 url link를 통해 이미지를 획득할때 시간이 오래걸리므로 cellForRowAt에서 cache와 async방법으로 접근 class ViewController: UIViewController { lazy var refreshControl: UIRefreshControl = { let control = UIRefreshControl() control.addTarget(self, action: #selector(..
Header, Section, Footer 개념 Section이 존재하고 Section 하나당 각각 Header와 Footer가 존재 예제에서는 Header가 Section1에서만 표출 Footer는 Section3에서만 표출하지 않는 형태 데이터 Entity 정의 import Foundation typealias MyItemList = [MyItem] struct MyItem { enum MyType { case a case b case c case d case e } let title: String let type: MyType } BaseView 정의 BaseTableViewCell class BaseTableViewCell: UITableViewCell { override init(style: U..
* UISearchBar HIG 참고: https://ios-development.tistory.com/505 embed segue로 이어진 View Controller 삭제 containerView에서 embed segue로 UITableView 연결 UISearchController xib에서는 지원하지 않으므로 code로 구현 UIView로 자리를 먼저 남겨놓고 거기에 SearchBar 삽입 // ViewController.swift private var searchController: UISearchController = { return UISearchController(searchResultsController: nil) }() 검색 창 초기화 obscuresBackgroundDuringPres..
TableView Section의 구성 = 한개의 Header + 다수의 Cell + 한개의 Footer style은 세가지가 존재: https://ios-development.tistory.com/538 * 3가지 스타일 실행화면 plain grouped inset grouped Section 사용 방법 Cell 이용과 동일하게 delegate에서 Section의 개수와 header에 관한 함수, footer에 관한 함수에 각각 데이터 반환하여 사용 extension ViewController: UITableViewDelegate, UITableViewDataSource { // MARK: - Section func numberOfSections(in tableView: UITableView) -> I..