Заголовок раздела таблицы не является липким в многосекционном представлении таблицы - PullRequest
0 голосов
/ 24 декабря 2018

Я реализовал просмотр таблицы (4 секции) в IOS.Проблема в том, что я только что добавил заголовок раздела в первый раздел. В других разделах заголовок отсутствует. В первом разделе нет строки (количество строк равно 0). В других разделах есть несколько строк. При прокрутке заголовок первого разделаЭто не наклейка. Она прокручивается и выходит за пределы экрана. Мой стиль представления таблицы прост. Как я могу сделать так, чтобы заголовок первого раздела всегда был липким. Код ниже.только один раздел, так что я реализовал его в несколько секций.

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    if section == 0 {
        return tabHeaderView.contentView
    }
    else {
        return UIView()
    }
}

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    if section == 0 {
      return UITableView.automaticDimension
    }
    else {
        return 0 //just first section have a header (tabview)
    }
}

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}

func numberOfSections(in tableView: UITableView) -> Int {
    if dataReady {
        totalSectionCount = getSectionCount()
        return totalSectionCount
    }
    else {
        return 1 //permanent because of tabview
    }
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
    if !dataReady || ApplicationContext.instance.userAuthenticationStatus.value == .semiSecure{
        return 1//for shimmer cell and semisecure view
    }
    else {
        return getNumberOfRows(sectionNumber: section)
    }
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if ApplicationContext.instance.userAuthenticationStatus.value == .semiSecure {
        semisecureViewCell = EarningsSemisecureViewCell()
        setSemisecureViewTextInfo(cell: semisecureViewCell)
        semisecureViewCell.delegate = self
        semisecureViewCell.layoutIfNeeded()
        return semisecureViewCell
    }
    else if !dataReady {
        return getShimmerCell()
    }
    else {
        if indexPath.row == 0 && !(selectedTabIndex == .BRANDPOINT && indexPath.section == 1){//marka puan listesinde header cell olmayacak
            return getSectionHeaderViewCell(tableView: tableView,sectionNumber: indexPath.section)
        }
        else {
            let cell = getTableViewCell(tableView: tableView, indexPath: indexPath)
            cell.layoutIfNeeded()
            return cell
        }
    }
}

Ответы [ 3 ]

0 голосов
/ 24 декабря 2018

Исходя из того, как вы описываете свои настройки, я склонен полагать, что вы ищете tableHeaderView из tableView, а не заголовок раздела.

См. Либо этот вопрос или официальная документация для получения дополнительной информации.

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

0 голосов
/ 24 декабря 2018

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

Здесь вы можете использовать одно из двух решений.

  1. Вместо заголовка раздела табличного представления.Поместите ваш вид поверх UITableView.
  2. Вы можете использовать только один раздел и объединить все строки в нем.
0 голосов
/ 24 декабря 2018

Если первый раздел всегда должен быть липким, когда отображается какой-либо раздел, я рассмотрю возможность размещения пользовательского представления поверх tableView.Используйте autoLayout или UIStackView, чтобы он работал как представление заголовка таблицы.

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