UITableviewcontroller
を使用していて、footer viewが常に画面のbottomにとどまるようにしたい。ただし、フッタービューのy
の位置は、height
のtableviewcell
に従って変更されます。常に画面の下部に固定する方法を教えてください。
tableview
フッタービューは常にtableview
の下部にとどまり、常にスクロールします。フッタービューを下部で固定する必要がある場合は、TableViewController
を使用できません。UIViewController
を使用する必要があるため、tableView
をサブビューとして配置します。フッターも別のサブビューとして配置し、完了します。
UITableViewController
は使用できませんが、とにかく必要はありません。 UITableView
を通常のUIViewController
に簡単に追加し、自動レイアウトを使用してUIView
をUITableView
の下に追加するだけです。次に、UIView
の下に赤いUITableView
を追加する簡単な例を示します。
import UIKit
class MyFooterTableViewController: UIViewController {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
var data = [ "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve"]
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.dataSource = self
}
@IBOutlet weak var tableView: UITableView!
}
extension MyFooterTableViewController: UITableViewDataSource {
// MARK: - Table view data source
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TableCellTest", for: indexPath)
cell.textLabel?.text = data[indexPath.row]
cell.detailTextLabel?.text = "BANANA"
return cell
}
}
ストーリーボードの制約は次のようになります。
最終結果はこれです:
完全なプロジェクトコードは次のとおりです。
https://www.dropbox.com/s/pyp42nzumquompp/TableViewFooter.zip?dl=
フッターは常にコンテンツサイズの下部に追加されます。だから私のアプローチは
アプローチ1:(静的および動的TableViewの両方で使用可能)
ストーリーボードにViewController
を追加し、フッタービュー(またはボタン)をViewController
の下部に設定します。
ContainerView
にViewController
を追加して制約を設定する
UITableViewController
を追加し、コンテナービューにテーブルビューを埋め込みます。
アプローチ2:(両方の動的TableViewで使用可能)
ViewController
を追加し、下部にフッタービューを設定し、UITableViewを追加して、自動レイアウトを設定します。
UIViewControllerで静的テーブルビューを設定することはできません