UITableView Отображение только одного раздела - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть следующее UIViewController, которое содержит UITableView:

class Home : UIViewController {

    override func loadView() {
        self.view = HomeView()
    }

    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

с этим представлением:

class HomeView: UIView {

let tableView = UITableView()
let delegate = TVDelegate()
let dataSource = TVDataSource()

override init(frame: CGRect) {
    super.init(frame: frame)
    createSubviews()
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    createSubviews()
}

func createSubviews() {
   setupTableView()
   setupConstraints()
}

func setupTableView() {
    tableView.estimatedRowHeight = 500
    tableView.tableFooterView = UIView()
    tableView.delegate = delegate
    tableView.dataSource = dataSource
    tableView.backgroundColor = UIColor.purple
    tableView.register(TVCell.self, forCellReuseIdentifier: "tableViewCell")
}

func setupConstraints() {
    tableView.prepareView()
    self.addFullSizeView(item: tableView)
}
}

Это мой делегат:

class TVDelegate : NSObject, UITableViewDelegate {

func numberOfSections(in tableView: UITableView) -> Int {
    return 5
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 500
}

}

и мой источник данных:

class TVDataSource : NSObject, UITableViewDataSource {

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if let cell = tableView.dequeueReusableCell(withIdentifier: "tableViewCell", for: indexPath) as? TVCell
    {
        return cell
    }
    return UITableViewCell()
}

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    return "Your Favourites"
}

}

Однако вместо просмотра 5 разделов при запуске приложения я вижу только один раздел с одним заголовком.

1 Ответ

2 голосов
/ 06 апреля 2019

numberOfSections это метод dataSource должен быть здесь

class TVDataSource : NSObject, UITableViewDataSource { 
  func numberOfSections(in tableView: UITableView) -> Int {
     return 5
  }
}

Что происходит, так это то, что tableView принимает номер по умолчанию, равный 1, где он не реализован в TVDataSource классе, поскольку метод является необязательным

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