Как отобразить и скрыть пользовательскую ячейку заголовка UITableView табличного представления в Swift3 iOS - PullRequest
0 голосов
/ 22 мая 2018

Я занимаюсь разработкой приложения в Swift3, в котором я должен показать и скрыть заголовок UITableView для разных пользователей.Для отображения UITableView Header View я создал пользовательский класс CustomHeaderCell из UITableViewCell.

Вот мой код:

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

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

        let headerCell = tableView.dequeueReusableCell(withIdentifier: "HeaderCell") as! CustomHeaderCell

        return headerCell
    }

Теперь кто-нибудь может помочь мне скрыть этот заголовок моего UITableView?

Примечание: я пытался использовать это tableView.tableHeaderView?.isHidden = true, но не работает.Нужно ли выполнять проверку в heightForHeaderInSection?

Ссылка на ссылку для добавления HeaderViewCell: http://www.accella.net/knowledgebase/custom-header-and-footer-views-for-uitableviews/

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Вы смешиваете tableHeaderView и представления заголовка раздела, которые различаются:

  • tableHeaderView - представление, отображаемое в качестве заголовка для всего представления заголовка раздела UITableView
  • многоразовые представления, используемые для отображения заголовка над каждым разделом

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

Кроме того, лучше использовать UITableViewHeaderFooterView вместо UITableViewCell.Поведение в целом такое же, но оно сделано для этого использования:

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    if sectionNeedHeader {
        return 235.0
    }

    return 0.0
}

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    if sectionNeedHeader {
        let headerCell = tableView.dequeueReusableHeaderFooterView(withIdentifier: "HeaderView") as! CustomHeaderView
        return headerView
    }

    return nil
}
0 голосов
/ 22 мая 2018

Если у вас есть способ дифференцировать пользователей, вы можете просто изменить высоту заголовка следующим образом:

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    if userA {
        return 235.0
    } else {
        return 0
    }
}

Это должно помочь скрыть заголовок

...