ios - 使用静态单元格在 UITableViewController 上添加按钮覆盖

标签 ios swift uitableview button

我尝试在带有静态单元格UITableViewController 上添加按钮覆盖。但我得到了这个结果,按钮正在工作,但我没有看到搜索结果:

enter image description here

我试图得到这个结果:

enter image description here

无论向上或向下滚动,我希望按钮始终位于底部。

在我的代码中,我使用框架 InstantSearch:

import UIKit
import InstantSearch
import WARangeSlider

class SearchTableViewController: UITableViewController {

    @IBOutlet weak var resultButton: StatsButtonWidget!

    override func viewDidLoad() {
        super.viewDidLoad()

        resultButton.frame = CGRect(x: 0, y: 0, width: 150, height: 60)
        navigationController?.view.addSubview(resultButton)

        InstantSearch.shared.registerAllWidgets(in: self.view)

        LayoutHelpers.setupResultButton(button: resultButton)
        resultButton.addTarget(self, action: #selector(resultButtonClicked), for: .touchUpInside)

    }
}

如何在 UITableViewController 的底部添加按钮覆盖?我只需要使用 UITableViewController,而不是 UIViewController 和 TableView。

最佳答案

您可以直接将按钮添加到 UITableView 而无需 AutoLayout,并确保 TableView 的 delegate 是 Controller ,例如:

override func viewDidLoad() {
    super.viewDidLoad()

    self.button.frame = CGRect(x: 0, y: self.tableView.frame.size.height - 50, width: self.tableView.frame.width, height: 50)
    self.tableView.addSubview(self.button)
    self.tableView.delegate = self
}

然后您可以在 TableView 滚动时通过 UIScrollView 委托(delegate)(UITableViewDelegate 继承自此)修复按钮的位置:

public func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if (scrollView == self.tableView) {
        let originY = scrollView.frame.size.height - self.button.frame.size.height + scrollView.contentOffset.y
        self.button.frame = CGRect(x: 0, y: originY, width: scrollView.frame.width, height: self.button.frame.size.height)
    } 
}

或者,如果你想通过AutoLayout定位按钮,只需定义一个NSLayoutConstraint属性,并将它绑定(bind)到按钮的底部空间约束到它的父 View 。然后在 scrollViewDidScroll 函数中通过相同的机制调整约束的常量值。

关于ios - 使用静态单元格在 UITableViewController 上添加按钮覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47547648/

相关文章:

ios tableViewCell.xib文件生成多个单元格

Ios 模拟器 - 键盘出现后,如何让它消失以及涉及的用户体验模式是什么?

ios - 快速识别按下了哪个按钮

ios - 静态 UITableView 出现禁用的不透明 alpha 不起作用

iphone - 如何设置不同高度的 UITableViewCell 背景图片?

ios - 将数据放入 UIView 容器中的嵌入式 TableView 中

iphone - 字符串转换为未知格式的日期 iPhone

ios - 将图像上传到 RESTful API

string - 在应用程序及其扩展之间共享一个大字符串

swift - 如何取消调度队列