Перекрытие подвида таблицы с подклассом UIView - PullRequest
0 голосов
/ 07 октября 2018

У меня есть подкласс UIView, который должен быть «плавающим» над TableView, который размещает весь экран.Подвид UIView отображался так, как и должно быть, когда он был установлен в том же ViewController, что и TableView.Я попытался сделать этот элемент многоразовым, поэтому переместил его в отдельный класс UIView.Теперь UIView отображается под TableView.Реализация метода takeSubviewToFront () или sendSubviewToBack () не работает и ничего не меняется.

Вот упрощенный код:

Класс UIView

 class SomeUIView: UIView {
    override init(frame: CGRect) {
    super.init(frame: frame)
    self.translatesAutoresizingMaskIntoConstraints = false
    self.addSubview(someUIView)
    setupSomeUIView() //autolayout.etc 
    }

    let someUIView: UIView = {
     //here goes customisation
     return UIView
    }

    func setupSomeUIView(){
      someUIView.translatesAutoresizingMaskIntoConstraints = false
      someUIView.leftAnchor.constraint(equalTo: self.safeAreaLayoutGuide.leftAnchor, constant: 7).isActive = true
      someUIView.topAnchor.constraint(equalTo: self.safeAreaLayoutGuide.topAnchor, constant: 10).isActive = true
      someUIView.rightAnchor.constraint(equalTo: self.safeAreaLayoutGuide.rightAnchor, constant: -7).isActive = true
      someUIView.bottomAnchor.constraint(equalTo: self.safeAreaLayoutGuide.topAnchor, constant: 63).isActive = true

    }

ViewController

class ViewController: UIViewController {
     someTableView = UITableView()       

     someUIView: SomeUIView { return self.view as! SomeUIView}

     ovveride func viewDidLoad() {
     super.viewDidLoad()
     self.view = SomeUIView(frame: UIScreen.main.bounds)
     setupTableView()
     }

     func setupTableView() {
       view.addSubview(searchResultsTableView)
       someTableView.contentInset = UIEdgeInsets(top: 70, left: 0, bottom: 0, right: 0)
       someTableView.translatesAutoresizingMaskIntoConstraints = false
       someTableView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 40).isActive = true
       someTableView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 0).isActive = true
       someTableView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
       someTableView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
       someTableView.register(SomeCell.self, forCellReuseIdentifier: "cell")
}

Чтоя скучаю?

1 Ответ

0 голосов
/ 07 октября 2018

Проблема в этой строке:

self.view = SomeUIView(frame: UIScreen.main.bounds)

Это незаконно.Вы не можете изменить основной вид контроллера представления в viewDidLoad.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...