Как использовать фиксированную ячейку в таблице, а затем список элементов ниже этого? - PullRequest
1 голос
/ 22 октября 2019

Я использую приведенный ниже код для одной фиксированной ячейки вверху, а затем список элементов внизу в одном табличном представлении. Я могу загрузить данные из базы данных firestore, но первый элемент из базы данных не отображается,он как бы спрятан за фиксированной «подробной ячейкой», остальные фиксированные ячейки и все остальные элементы из базы данных показывают, как это исправить?

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

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
       // print(posts)
        return posts.count

    }
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        if indexPath.row == 0 && details1.count > 0 {
            let cell = tableView.dequeueReusableCell(withIdentifier: "detailsCell") as! DetailsCellInHomeScreen

            cell.set(details: details1[indexPath.row])
            return cell
        } else if posts.count > (indexPath.row - 1) {
            let cell = tableView.dequeueReusableCell(withIdentifier: "postCell", for: indexPath) as! PostTableViewCell

            cell.set(post: posts[indexPath.row - 1])
            return cell
        } else {
            return UITableViewCell()
        }
    }

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

Вы должны добавить заголовок в табличном представлении:

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

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
       // print(posts)
        return posts.count

    }
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

            let cell = tableView.dequeueReusableCell(withIdentifier: "postCell", for: indexPath) as! PostTableViewCell

            cell.set(post: posts[indexPath.row - 1])
            return cell
    }

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let headerView = UIView.init(frame: CGRect.init(x: 0, y: 0, width: tableView.frame.width, height: 50))

        let label = UILabel()
        label.frame = CGRect.init(x: 5, y: 5, width: headerView.frame.width-10, height: headerView.frame.height-10)
        label.text = "A Label on detailsCell"
        headerView.addSubview(label)

        return headerView
    }

    override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 50
    }

, если у tableView есть несколько разделов, вы можете реализовать раздел с помощью section: Int объекта

tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?, используемого для созданияпредставление заголовка и tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat использует для установки высоты заголовка

0 голосов
/ 22 октября 2019

TableView имеет функцию, подобную приведенной ниже:

// MARK: - Headers and Footers
extension MyTableViewController {
    override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        return MyCustomView()
    }
}

Вы можете использовать эту функцию для возврата любого необходимого представления в качестве заголовка раздела . Также обратите внимание, что sectionHeader представления являются липкими в табличном стиле по умолчанию (не сгруппированный стиль! ). Таким образом, вы можете использовать это в качестве преимущества.

В Интернете есть много учебных пособий , подобных этому , чтобы вы могли узнать и создать собственный заголовок раздела раздела для UITableView * 1015. *

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