iOS Week4
UITableView
一定の形式のスクリーン構成を繰り返し、リスト→UITAbleViewとCellに含めます.ex)KakaoTalkダイアログウィンドウ、Instagram購読ソース
リスト形式で、スクロール可能(垂直のみ)です.
セクションを視覚的に区別するには、セクションを使用します.
画像またはテキストを使用して、一部のタイトルとツイッターに追加の情報を表示できます.
TableViewDelegate
プロトコルにメソッドが宣言されている→オプションなので、必須の実装方法ではありません.
UITableViewDelegate プロトコルの主な方法
// 지정된 행이 선택되었음을 알리는 메서드
func tableView(UITableView, didSelectRowAt: IndexPath)
// 지정된 행의 선택이 해제되었음을 알리는 메서드
func tableView(UITableView, didDeselectRowAt: IndexPath)
// 특정 위치 행의 높이를 묻는 메서드
func tableView(UITableView, heightForRowAt: IndexPath)
// 특정 위치 행의 들여쓰기 수준을 묻는 메서드
func tableView(UITableView, indentationLevelForRowAt: IndexPath)
// 특정 섹션의 헤더뷰 또는 푸터뷰를 요청하는 메서드
func tableView(UITableView, viewForHeaderInSection: Int)
func tableView(UITableView, viewForFooterInSection: Int)
// 특정 섹션의 헤더뷰 또는 푸터뷰의 높이를 물어보는 메서드
func tableView(UITableView, heightForHeaderInSection: Int)
func tableView(UITableView, heightForFooterInSection: Int)
// 테이블뷰가 편집모드에 들어갔음을 알리는 메서드
func tableView(UITableView, willBeginEditingRowAt: IndexPath)
// 테이블뷰가 편집모드에서 빠져나왔음을 알리는 메서드
func tableView(UITableView, didEndEditingRowAt: IndexPath?)
TavleViewDataSource
プロトコル内で宣言された方法→CellForRowAt&NumberOfRowsInSectionは、オプションの追加項目がないため、必須の実装方法です.
UItableViewDataSourceプロトコルの主な方法
@required
**// 특정 위치에 표시할 셀을 요청하는 메서드**
func tableView(UITableView, cellForRowAt: IndexPath)
**// 각 섹션에 표시할 행의 개수를 묻는 메서드**
func tableView(UITableView, numberOfRowsInSection: Int)
@optional
// 테이블뷰의 총 섹션 개수를 묻는 메서드
func numberOfSections(in: UITableView)
// 특정 섹션의 헤더 혹은 푸터 타이틀을 묻는 메서드
func tableView(UITableView, titleForHeaderInSection: Int)
func tableView(UITableView, titleForFooterInSection: Int)
// 특정 위치의 행을 삭제 또는 추가 요청하는 메서드
func tableView(UITableView, commit: UITableViewCellEditingStyle, forRowAt: IndexPath)
// 특정 위치의 행이 편집 가능한지 묻는 메서드
func tableView(UITableView, canEditRowAt: IndexPath)
// 특정 위치의 행을 재정렬 할 수 있는지 묻는 메서드
func tableView(UITableView, canMoveRowAt: IndexPath)
// 특정 위치의 행을 다른 위치로 옮기는 메서드
func tableView(UITableView, moveRowAt: IndexPath, to: IndexPath)
テープビューのDelegateとDataSourceの関係を示します.func tableView(UITableView, cellForRowAt: IndexPath)
→dequeReusableCell:再利用可能なセルをキューから取り出します.名前の通り、実際に再利用可能なキューで 特定の識別子セルを取得する方法
iOSアプライアンスのメモリは無限ではないため、重複ビューを作成する場合は、メモリを節約するためにビューを再使用することが望ましい.
そこで、以下の原理を利用して、 UITableViewCell でも UIcollectionViewCellを再使用します.
UITableViewCell
セルの構造は、上図のようにコンテンツ領域と添付ファイルビュー領域に分けられます.
Basic Style
UITableViewCell 継承クラスのデフォルトtable viewユニットは、次のとおりです. 標準スタイルを使用できます.
標準スタイルUItableViewセル クラスは、セルの内容に3つのプロセスを定義します.
Custom Style
ユーザーは、異なるアプリケーションのニーズを満たすためにUItableViewCellクラスから離れるようにユニットをカスタマイズできます.セルをカスタマイズすることで、テキストの右側に画像を配置するなど、必要なビジュアル形式を作成できます.
Cell Life Cycle
awakeFromNib()
インタフェースジェネレータアーカイブまたはnibファイル作成後に初期化操作を準備する場所
簡単に言えば、これは最初の初期化ユニットの動作である.
tableView(_:cellForRowAt)
データ・ソースに対して、Table View内の特定の場所にセルを挿入するように要求する方法
実装時には、tableビューのdequeReusableCell(withIdentifiier:for:)メソッドを使用して、指定したindexPathを使用してセルを適切に作成します(メモリにロードされます).
tableView(_:willDisplay:forRowAt:)
Delegateがセルオブジェクトを描画する前に呼び出される関数
画面表示前にタスクを実行
prefetch
UITableViewDataSourcePrefetching
Table ViewおよびCollectionView用のUItableView Data SourcePrefetchingプロトコル.
表示ユニット以外のユニットの情報を事前に呼び出してデータを受信することができる.
→つまり、画面に見えない他ユニットの情報を受信することができる.
実装する必要がある関数:
prefetchRowsAt
tableView(_:didEndDisplaying:forRowAt:)
tableビューからセルが画面に消えたときに呼び出される方法
prepareForReuse()
table view delegateで再使用可能なセルを準備する方法.
AwakeFromNibの画面に表示されているユニット数に応じてユニット数を作成→再使用してキューに入れたユニットなので、ユニットを作成するのではなく、再使用する仕組みを使います!
なぜindexPathのrowを参照するのか:最初の0は テーブルビューのsectionについて、2番目の数字は sectionのローに関する情報.だから、indexPath.2番目の数字、すなわち行に関する情報を参照するにはrowを使用する必要があります.
Collection VIew
テーブルビューとほぼ同じ
UICollectionViewDelegateFlowLayout
このプロトコルは、集合ビュー内のセルのサイズまたはセル間の間隔を定義し、プロトコル内のすべての方法がオプションです.
プロトコル内のメソッド
Reference
この問題について(iOS Week4), 我々は、より多くの情報をここで見つけました https://velog.io/@enchantee/UMC-iOS-Week4-TableViewCollectionViewテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol