我正在使用UITableviewcontroller
,我希望页脚视图始终保持在屏幕的底部。但是,页脚视图的y
位置正在根据height
的{{1}}进行更改。我怎么能一直把它贴在屏幕的底部?
答案 0 :(得分:5)
tableview
页脚视图始终位于tableview
的底部,并始终随之滚动。如果您需要将页脚视图固定在底部,则无法使用TableViewController
。您必须使用UIViewController
,将tableView
作为子视图。将页脚也作为另一个子视图并完成。
答案 1 :(得分:0)
页脚总是添加到内容大小的底部。所以我的方法是
方法1 :(静态和动态TableView均可用)
在情节提要中添加ViewController
,并将页脚视图(或按钮)设置在ViewController
的底部。
在ContainerView
中添加ViewController
并设置约束
添加一个UITableViewController
并将表视图嵌入到容器视图中
方法2 :(两个动态TableView均可用)
添加一个ViewController
,在底部设置页脚视图,添加UITableView并设置自动布局。
您不能在UIViewController中设置静态tableview
答案 2 :(得分:0)
您不能使用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=0
答案 3 :(得分:-1)
Swift Code使footerView填充底部的剩余空间, 然后你可以使用autolayout让你在footerView底部查看:
override func viewDidLayoutSubviews()
{
super.viewDidLayoutSubviews()
guard let footerView = tableView.tableFooterView else
{
return
}
var cellsHeight:CGFloat = tableView.tableHeaderView?.frame.height ?? 0
let sections = self.numberOfSections(in: tableView)
for section in 0..<sections
{
let rows = self.tableView(tableView, numberOfRowsInSection: section)
for row in 0..<rows
{
let indexPath = IndexPath(item: row, section: section)
cellsHeight += self.tableView(tableView, heightForRowAt: indexPath)
}
}
var frame = footerView.frame
frame.size.height = tableView.contentSize.height - cellsHeight;
frame.origin.y = cellsHeight
footerView.frame = frame
}
答案 4 :(得分:-1)
我遇到了同样的问题,令人惊讶的是Apple没有开箱即用。在这里查看我的答案,无论细胞有多少或细胞有多高,它都会让你的页脚保持在底部https://stackoverflow.com/a/41816730/1553351
答案 5 :(得分:-1)
覆盖现有的 UiTableView 方法
func allowedFooterViewToFloat() -> Bool { 返回真 }