iOS Week4


UITableView


一定の形式のスクリーン構成を繰り返し、リスト→UITAbleViewとCellに含めます.ex)KakaoTalkダイアログウィンドウ、Instagram購読ソース
リスト形式で、スクロール可能(垂直のみ)です.
セクションを視覚的に区別するには、セクションを使用します.
画像またはテキストを使用して、一部のタイトルとツイッターに追加の情報を表示できます.

TableViewDelegate

  • table view delegateオブジェクト UITableViewDelegate 協定を採る.
  • デリーゲット ビジュアル部分を修正し、 行の選択を管理します. セカンダリビューのサポート まだあります. tableビューの各ローの編集を支援します.

  • プロトコルにメソッドが宣言されている→オプションなので、必須の実装方法ではありません.
    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

  • tableviewデータソースオブジェクト UITableViewDataSource 協定を採る.
  • データソースはtableviewオブジェクトにテーブルビューの作成と変更に必要な情報を提供します.

  • プロトコル内で宣言された方法→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を再使用します.
  • tableビューおよびコレクションビューにユニットを表示するために、データソースにビュー(ユニット)インスタンスの提供を要求する.
  • データ・ソースでは、必要に応じて新しいユニットを作成できません. 「キューの再使用」(Reuse Queue)で、再使用を待つセルがあるかどうかを確認し、そのセルに新しいデータを設定し、ない場合は新しいセルを作成します.
  • tableビューとコレクションビューは、データソースがセルに戻ったときに画面に表示されます.
  • ユーザがスクロールすると、一部のユニットは画面の外に消え、再使用キューに再アクセスします.
  • の上の第1~第4のプロセスは、
  • を繰り返す.

    UITableViewCell



    セルの構造は、上図のようにコンテンツ領域と添付ファイルビュー領域に分けられます.
  • ユニットの内容:主に文字列、画像または固有識別子などを入力します.
  • 添付コメント:詳細ビュー、並べ替え、スイッチなどの制御オブジェクトが含まれています.
  • Basic Style


    UITableViewCell 継承クラスのデフォルトtable viewユニットは、次のとおりです. 標準スタイルを使用できます.
    標準スタイルUItableViewセル クラスは、セルの内容に3つのプロセスを定義します.
  • テキストラベル:UILabel:テーマディレクトリラベル
  • DetailTextLabel:UILabel:その他の詳細を表示するためのサブタイトルラベル
  • imageView:UIImageView:画像を表示する画像ビュー
  • 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
  • コアに必要なデータを事前に受信し、10コアを事前に受信します.
  • cancelPrefetchingForRowsAt:
  • のプリフェッチを必要としないユニットに対する操作をキャンセルする方法
  • .
  • は、通常、スクロール方向が変化するときにデータのロードをキャンセルするために用いられるが、不要な操作をキャンセルすることでCPU時間を短縮することもできる
  • .

  • tableView(_:didEndDisplaying:forRowAt:)
    tableビューからセルが画面に消えたときに呼び出される方法

  • prepareForReuse()
    table view delegateで再使用可能なセルを準備する方法.
    AwakeFromNibの画面に表示されているユニット数に応じてユニット数を作成→再使用してキューに入れたユニットなので、ユニットを作成するのではなく、再使用する仕組みを使います!
  • +)特定のセルに特定の情報を入れるときに使用するIndexPath

    なぜindexPathのrowを参照するのか:最初の0は テーブルビューのsectionについて、2番目の数字は sectionのローに関する情報.だから、indexPath.2番目の数字、すなわち行に関する情報を参照するにはrowを使用する必要があります.

    Collection VIew


    テーブルビューとほぼ同じ
  • UICollectionViewDelegate、UICollecionViewDataSourceプロトコル
  • を採用
  • コレクションビューを生成した後、nibファイルを使用してセルを作成し、コレクションビューに
  • を登録します.

    UICollectionViewDelegateFlowLayout


    このプロトコルは、集合ビュー内のセルのサイズまたはセル間の間隔を定義し、プロトコル内のすべての方法がオプションです.
    プロトコル内のメソッド