Не удалось установить какие-либо свойства для пользовательской ячейки для TableView.Кроме того, когда я заполняю таблицу в функции cellForRowAt, она возвращает пустую таблицу. - PullRequest
0 голосов
/ 06 апреля 2019

Невозможно установить свойства для пользовательской ячейки для представления таблицы.Также не удалось присвоить значение пользовательской ячейке в функции cellForRowAt.Я использую swift 5 и xcode 10.2

import UIKit
class ContainerViewController: UIViewController, UITableViewDelegate,     UITableViewDataSource {
    let CellId = "CellId"
    let tableView : UITableView = {
        let tv = UITableView()
        tv.allowsSelection = false
        tv.separatorStyle = .none
        return tv
    }()

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: CellId, for: indexPath) as! Cell
        //cell.labelView.textColor = .red -- tried to set color here
        cell.labelView.text = "Label \(indexPath.row)" // this code doesn't seems to work
        return cell
    }
}

//- Custom Cell Class
class Cell: UITableViewCell{
    let cellView : UIView = {
        let view = UIView()
        view.backgroundColor = UIColor.red // -- this property doesn't reflect. Also, i want to add shadow to this view any suggestions?
        return view
    }()

    let labelView: UILabel = {
        let label = UILabel()
        label.textColor = UIColor.black // -- this property doesn't reflect
        label.font = UIFont.boldSystemFont(ofSize: 16) // -- this property doesn't reflect
        return label
    }()

    func setUpCell() {
        //-- Also tried to set properties here but no luck
        //backgroundColor = UIColor.yellow
        //labelView.textColor = UIColor.black
        addSubview(cellView)
        cellView.addSubview(labelView)
        //cellView.backgroundColor = .green
    }
}

Я также хочу добавить ограничение для этой новой пользовательской ячейки.

1 Ответ

0 голосов
/ 07 апреля 2019

попробуйте использовать contentView.addSubview(cellView) вместо addSubview(celliIew)

Поскольку вы хотите использовать ограничения автопоставки, убедитесь, что вы установили cellView. translatesAutoResizingMaskIntoConstraints = false (То же самое для представления метки)

, а затемможно начать

NSLayoutConstraints.activate([
cellView.topAnchor.constraint(equalTo: contentView.topAnchor),
cellView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor),
cellView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor),
cellView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor),

... Setup label constraints ...
)]
...