2017-09-12 17 views
0

私はUITableViewのカスタムセルを持ちます(各セルにはカスタム高さと動的な高さがあります)。フローティングでないUITableViewフッター

常にtableView contentSizeの下部にある、テーブルビューにフッタービューを追加したいとします。

contentSizeが画面サイズよりも大きい場合、tableViewの下部に表示されます(通常の最後のセルのようにスクロールします)。

contentSizeが画面サイズより小さい場合、フッターは画面の最下部に残り、最後のセルからフッターまでにギャップがあります。

私はこのようなフッターを追加しようとしました:

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { 
    let myFooterView = Bundle.main.loadNibNamed("MyFooterView", owner: self, options: nil)?.first as! MyFooterView 
    myFooterView.delegate = self 
    myFooterView.frame = CGRect(x: 0, y: 0, width: self.tableView.frame.size.width, height: 100) 
    return myFooterView 
} 

しかし、私はスクロールするとフッターが下にで浮いています。私は達成したいことではない。

私が望むようにどのように非浮動フッタを実現できますか?

ありがとうございます! :)

+0

追加の 'UITableViewCell'としてフッターを追加 –

+0

@ReinierMelian私はそれについて考えました。しかし、私が言ったように:「contentSizeが画面サイズよりも小さい場合、フッターは画面の一番下にあり、最後のセルからフッターまでにギャップがあります。」追加のセル –

答えて

2

ビューをサブビューとしてテーブルビューに追加し、位置をscrollView:didScroll:に調整します。これを行うには、UIScrollViewDelegateにView Controllerに準拠させます。私はUITabelViewControllerがテーブルビューのデリゲート(自動的にUIScrollViewでもある)だと思います。

トリッキーな部分は、コンテンツのサイズ、コンテンツのオフセット、ビューのサイズ、フッターのサイズに基づいて位置を計算することです。

+0

こんにちはで動作しません。ご回答有難うございます。もう少し説明できますか?デリゲート関数とその値をどのように調整できますか? –

+0

@ F.SO7答えの更新を参照してください。 – dasdom

+0

私はデリゲートメソッドを追加する方法を知っています。しかし、私はフッターのサブビューのyの位置を設定する必要がありますか? –

関連する問題