Я хочу расположить верхний UIView поверх UITableView с помощью SnapKit - PullRequest
0 голосов
/ 28 марта 2019

Я написан в snapkit для визуализации интерфейса. Я не использую раскадровку или файлы перьев.

Я хочу расположить верхний UIView поверх UITableView с помощью SnapKit.

Как это написать?

Ниже мой письменный код

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])
    }
}

Мой код: enter image description here

Я хочу это !: enter image description here enter image description here

UIView должен быть помещен в UITableView детей !!

Извините, мой плохой английский ..

Спасибо за чтение

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Вы хотите подпредставление, которое является липким заголовком таблицы. Измените эту строку self.tableView.addSubview(self.subView) на tableView.tableHeaderView = subView.

0 голосов
/ 28 марта 2019

Вы можете легко добавить метод tableView:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

    if section == 0 {
        return self.subView
    } else {
        return UIView.init(frame: CGRect.zero)
    }
}
...