Apr 9, 2021, TIL (Today I Learned) - UITableView, Cell, DataSource, Delegate


学習内容


UItableViewとは?


iOSアプリケーションで情報をリスト表示するためのユーザーインタフェース.

UItableView Cellとは?


UItableViewCellがUIViewを継承
table viewのセルは、各テーブルビューを構成する個別の行(row)を表す.
当たり前のように聞こえるかもしれませんが、TableViewCellはUITableViewCell Classを継承します.

表ビューユニットの構造


標準テーブルビューユニットは、デフォルトではコンテンツ領域のみを含むことも、補助ビュー領域を含むこともできます.
  • コンテンツ領域:文字列、画像、または一意の識別子
  • アクセサリコメントエリア:詳細ビュー、並べ替え、スイッチなどの制御対象

  • [ソース]:UITableViewCell | Apple Developer Documentation
    編集モードでは、次の機能を追加できます.
  • 削除制御
  • 追加コントロール
  • 並べ替え制御(アクセサリーコメント)
  • テープビューユニットの基本機能

  • テキストラベル:UIラベル:メインタイトルラベル
  • DetailTextLabel:UiL:詳細を表示
  • imageView:表示画像
  • DataSourceとDelegateがないと、UItableViewオブジェクトが正常に動作しにくくなります.この2つのプロトコルの役割は、UItableビューの秘書と同じであり、それぞれの専門分野でUItable Viewを機能させることができます.

    IndexPath(for:)

    func indexPath(for cell: UITableViewCell) -> IndexPath?
    class ItemTableViewController: UITableViewController {
        var items: [Item] = []
    .
    .
    .
    guard let cell = self.tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? ItemTableViewCell else {
                return UITableViewCell()
            }
            cell.itemName.text = items[indexPath.row].name
    }
    indexPathはtableView行を識別するインデックスパスです.
    cell.itemName.text = items[indexPath.row].name
    上のコードを理解すれば
    tableview行の位置
    itemsという名前の配列では、
    私はそれをitemNameのテキストに書くことができます.

    UITableView DataSource

  • データソースオブジェクトは、UItableViewDataSource Protocolを使用します.
  • UItableViewには、
  • ビューユニットの作成および変更に必要なデータが用意されています.
  • UI ViewControllerこのプロトコルを使用すると、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)
    [ソース]:iOSアプリケーションプログラミング>3)DataSourceとDelegate?:boostcourse

    UITableViewDelegate

  • Table View Delegateオブジェクトは、UItableView Delegate Protocolを使用します.
  • テーブルビューのビジュアル部分を変更したり、単一のローを編集したり、行の選択を管理したり、添付ファイルビューをサポートしたりするのに役立ちます.
  • UI ViewControllerこのプロトコルを使用すると、UItableViewDelegateに위임を送信することで、次の機能を実行できます.
  • // 특정 위치 행의 높이를 묻는 메서드
     func tableView(UITableView, heightForRowAt: IndexPath)
     // 특정 위치 행의 들여쓰기 수준을 묻는 메서드
     func tableView(UITableView, indentationLevelForRowAt: IndexPath)
    
     // 지정된 행이 선택되었음을 알리는 메서드
     func tableView(UITableView, didSelectRowAt: IndexPath)
    
     // 지정된 행의 선택이 해제되었음을 알리는 메서드
     func tableView(UITableView, didDeselectRowAt: 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?)
    [ソース]:iOSアプリケーションプログラミング>3)DataSourceとDelegate?:boostcourse
    [参考資料]
    UITableViewCell | Apple Developer Documentation
    UITableViewDataSource | Apple Developer Documentation
    UITableViewDelegate | Apple Developer Documentation
    iOSアプリケーションプログラミング>2)table viewerとは?boostcourse
    Table ViewコードのindexPath|VincentGenranium Blogの学習

    Mind Map