tableView не появляется, когда находится в центре родительского представления - PullRequest
0 голосов
/ 10 октября 2018

У меня есть viewController со следующим (статическим) tableView:

class viewController: UIViewController, UITableViewDelegate {

    private let tableView: UITableView = {
    let tv = UITableView()
    tv.separatorStyle = .singleLine
    tv.allowsSelection = true
    tv.isScrollEnabled = false
    return tv
    }()

    private let tableData = ["row1", "row2", "row3", "row4"]

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.translatesAutoresizingMaskIntoConstraints = false
        tableView.delegate = self
        tableView.tableFooterView = UIView()
        view.addSubview(tableView)

        NSLayoutConstraints.activate([
            tableView.centerXAnchor.constraints(equalTo: view.safeAreaLayoutGuide.centerXAnchor),
            tableView.centerYAnchor.constraints(equalTo: view.safeAreaLayoutGuide.centerYAnchor)
       )]
    }

        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell = UITableViewCell(style: .subtitle, reuseIdentifier: "cell")
            cell.textLabel!.text = tableData[indexPath.row]
            return cell
        }

        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return tableData.count
        }
}

Когда я запускаю приложение, этот viewController показывает пустой экран.Я знаю, что способ, которым я устанавливаю ограничения табличного представления, является проблемой, потому что, когда я настраиваю tableView, используя topAnchor, bottomAnchor, leftAnchor и rightAnchor (и с некоторыми другими настройками), появляется табличное представление.Есть идеи, почему приложение так себя ведет?

Ответы [ 2 ]

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

Проблема в том, что это НЕ статическое табличное представление.Если бы это было так, вы бы не реализовали cellForRowAt.Это нормальное табличное представление, для которого требуется источник данных и делегат.Плюс ему нужны высота и ширина.

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

Ваше табличное представление, вероятно, там и центрировано, но вы не определили размер, поэтому, вероятно, он установлен на нулевую ширину и высоту, поэтому вы его не видите.

Вы можетеисправьте это, установив ограничение на его ширину и высоту, либо на константу, либо на отношение к ее суперпредставлению, в зависимости от того, что вы хотите.

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