swift - 我想使用 SnapKit 将顶部 UIView 放置在 UITableView 之上
问题描述
我是用 snapkit 编写的 UI 渲染。我没有使用故事板或 nib 文件。
我想使用 SnapKit 将顶部 UIView 放置在 UITableView 之上。
怎么写?
下面是我写的代码
swift
import UIKit
import SnapKit
class ViewController: UIViewController {
var data: [String] = []
var tableView = UITableView()
var subView = UIView()
var label = UILabel()
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self
self.tableView.dataSource = self
// Do any additional setup after loading the view, typically from a nib.
label.text = "Hello?"
self.view.addSubview(self.tableView)
self.tableView.addSubview(self.subView)
self.subView.addSubview(self.label)
self.subView.backgroundColor = .gray
self.tableView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
self.subView.snp.makeConstraints { make in
make.top.width.equalTo(self.tableView)
make.centerX.equalTo(self.tableView)
make.height.equalTo(200)
}
self.label.snp.makeConstraints { make in
make.centerX.centerY.equalTo(self.subView)
}
for i in 0...100 {
data.append("\(i)")
}
self.tableView.reloadData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.data.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let element = self.data[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "comicListCell") ?? UITableViewCell(style: .normal, reuseIdentifier: "comicListCell")
cell.textLabel?.text = element
return cell
}
}
extension ViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print(self.data[indexPath.row])
}
}
UIView 必须放入 UITableView 孩子!!
对不起我的英语不好..
谢谢阅读
解决方案
你想要子视图,它是 tableview 的粘性标题。将此行更改self.tableView.addSubview(self.subView)
为
tableView.tableHeaderView = subView
.
推荐阅读
- javascript - Vue - 循环使用不同类型输入和绑定动态 v-model 数据的多个自定义组件的最佳方式
- java - 为什么覆盖父类方法并在子类中添加 throws 语句会在 java 中生成编译时错误
- html - 如何合并这两个 css 文件以使样式完美运行?
- python - python id() 函数的补充?
- java - 如何使用 BIWEEKLY 为谷歌事件发送提醒电子邮件
- excel - 当单元格具有生成空白或值的现有格式时,无法为单元格设置格式规则以填充白色
- python - Pandas 通过从列表中返回匹配字符串的行来创建一个新的数据框,该列表与另一个数据框的 1 列中的单元格进行检查
- python - 使用 auto-upgrade-helper 升级时出现 git 错误
- google-maps - Xamarin.Forms.GoogleMaps 从 ViewModel 绑定 MoveToRegion
- android - Sentry-android 自签名 SSL 证书 (SSLPeerUnverifiedException)