iOS

Swift4:UITableViewの高さ

UITableViewの高さ、行数、行の高さ・ヘッダーの高さ、先頭行位置、最終行位置などの操作についてのメモです。

この作表においては、.reloaData()を適当に入れたためこれが悪さし、各行の更新が終わらないようになり(ループしてしまい)、とても苦労しました。Z.bookArrayは[String]でbookmarkの配列になります。wkGyosuPerPageはInt、wkRowsizeとwkHeadersizeは常数(Int)です。

🔴 先頭行へのスクロールは単純です(Scroll to the top)。

    @IBAction func IBAExecGo2Top() {                                //スクロール先頭
        self.vTableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: false)//
        wkIndexPath                 = IndexPath(row: 0, section: 0) //
    }//=============================================================//

🔴 最終行へのスクロールは1ページの行数と最終行位置で計算をする必要があります。
(Scroll to the bottom. Calculate the rows in the last page.)

wkGyosuPerPage = Int((vTableView.frame.height – wkHeadersize) / wkRowsize)

    @IBAction func IBAExecGo2Bottom() {                             //スクロール最後
        var wRow:Int                = Z.bookArray.count – 1         //最後の行位置
        if wRow < wkGyosuPerPage    { wRow   = 0 }                  //1ページ内に収まるとき、先頭行から表示。
        else                        { wRow   = wRow – (wkGyosuPerPage – 1) }//最終行ー(1ページ行数1)から表示。
        self.vTableView.scrollToRow(at: IndexPath(row: wRow, section: 0), at: .top, animated: false)//
        wkIndexPath                 = IndexPath(row:wRow, section:0)//
    }//=============================================================//

🔴 表全体の行数(The number of rows in all.)

    func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int {//表の行数を返す
        return Z.bookArray.count                                    //☎️♻️return♻️ bookmarkの行数
    }//=============================================================//☎️

🔴 表示(Edit the row.)

    func tableView(_ tableView:UITableView, cellForRowAt indexPath:IndexPath) -> UITableViewCell {//表示
        var wCell:UITableViewCell                                   //☎️
        wCell = ExecSetValue(tableView, pIndex:indexPath)           //☎️表に値をsetする。wCellは編集結果。
        return wCell                                                //☎️♻️return♻️ infoArray cellを返す。
    }//=============================================================//☎️

🔴 クリック時の処理(The process for the selected row.)

    func tableView(_ tableView:UITableView, didSelectRowAt indexPath:IndexPath) {//クリックした行位置
        ExecClickedRow(indexPath.row, pCount:indexPath.count)       //☎️
        vTableView.selectRow(at: indexPath, animated: false, scrollPosition: .none)
    }//=============================================================//☎️

🔴 行の高さ(The height definition execpt the header.)

    func tableView(_ tableView:UITableView, heightForRowAt indexPath:IndexPath) -> CGFloat {//行の高さ
        return wkRowsize                                            //☎️
    }//=============================================================//☎️

🔴 ヘッダーの高さ(The height definition for the header.)

   func tableView(_ tableView:UITableView, heightForHeaderInSection section:Int) -> CGFloat {//ヘッダ高さ
       return wkHeadersize                                         //☎️
   }//=============================================================//☎️

🔴 ヘッダーの表示(Edit the header.)

    func tableView(_ tableView:UITableView, viewForHeaderInSection section:Int) -> UIView? {//ヘッダー設定
        let wHeader = ExecSetHeader(tableView, pSection:section)    //☎️ヘッダーを設定する。
        return wHeader                                              //☎️
    }//=============================================================//☎️

Screenshot 2018-05-13 07.41.26

Categories: iOS, Swift, 技術