Это проблема, которая ставит меня в тупик и мою команду на работе.
У нас есть вид заголовка, который мы используем в одном разделе, который не всегда рисуется.Это противоречиво, хотя, кажется, немного чаще встречается на новых установках.
Сначала я опущу, заявив, что мы не регистрируем его в табличном представлении и, следовательно, фактически не удаляем его из очереди.Я попробовал это, но босс говорит, что, поскольку мы никогда не используем его повторно, он непреклонен против этого.Поэтому у нас это выглядит так:
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 секунд, появится заголовок, или если я прокручиву вниз, заголовок появится, как только он перерисовает раздел.Но мне нужно, чтобы он также отображался изначально, что он все еще делает в большинстве запусков приложения, но иногда просто нет.Честно говоря, самая расстраивающая часть - это несоответствие.
Любое понимание того, почему это происходит, и / или решение, которое не предполагает убеждение моего босса зарегистрировать представление для повторного использования, которое не собираетсяиспользовать повторно?