Заголовок раздела UITableView не всегда рисует - PullRequest
0 голосов
/ 07 июня 2018

Это проблема, которая ставит меня в тупик и мою команду на работе.

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

Сначала я опущу, заявив, что мы не регистрируем его в табличном представлении и, следовательно, фактически не удаляем его из очереди.Я попробовал это, но босс говорит, что, поскольку мы никогда не используем его повторно, он непреклонен против этого.Поэтому у нас это выглядит так:

class DashboardViewController {
...
    var trendsHeader: TrendsHeader?
...
    override func viewDidLoad() {
        super.viewDidLoad()
        setupTrendsHeader()
        ....
    }
...
    func setupTrendsHeader() {
        trendsHeader = Bundle(for: TrendsHeader.self).loadNibNamed(TrendsHeader.identifier, owner: view, options: nil)?.first as? TrendsHeader
        trendsHeader?.delegate = self
        trendsHeader?.datasource = self
        trendsHeader?.leftDropdown.selectRowWithAction(at: 0)
    }

...
    // in heightForHeaderInSection
    return TrendsHeader.cellHeight //Height is returned properly, empty space is of the right height

...
    // in viewForHeaderInSection
    return trendsHeader ?? UIView()//Should only return UIView if trendsHeader is nil
}

Я попытался изменить viewForHeaderInSection следующим образом:

//in viewForHeaderInSection
if trendsHeader == nil {
    setupTrendsHeader()//Breakpoint inserted here
}
return = trendsHeader ?? UIView()

И с точкой останова в операторе if, поэтому я должен знать, если trendsHeaderнольОн не достигает точки останова, но все еще не рисует этот заголовок.Если я буду ждать от 5 до 30 секунд, появится заголовок, или если я прокручиву вниз, заголовок появится, как только он перерисовает раздел.Но мне нужно, чтобы он также отображался изначально, что он все еще делает в большинстве запусков приложения, но иногда просто нет.Честно говоря, самая расстраивающая часть - это несоответствие.

Любое понимание того, почему это происходит, и / или решение, которое не предполагает убеждение моего босса зарегистрировать представление для повторного использования, которое не собираетсяиспользовать повторно?

1 Ответ

0 голосов
/ 12 июня 2018

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

Мы заменили код раздела перезагрузки на код строк перезагрузки, поэтому заголовок не обновляется.

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