y-позиция tableHeaderView намного ниже нуля - PullRequest
0 голосов
/ 27 апреля 2019

У меня есть сгруппированный UITableView, у которого сверху был дополнительный интервал из-за стиля .grouped. На StackOverflow я нашел следующее решение, которое прекрасно работает:

var tableHeaderFrame = CGRect.zero
tableHeaderFrame.size.height = CGFloat.leastNormalMagnitude
myTableView.tableHeaderView = UIView(frame: tableHeaderFrame)

Тем не менее, у меня есть UITapGestureRecognizer, который ищет кадр отправителя и пытается выделить для него правильный раздел, например:

if let headerView = sender.view?.superview as? MyTableHeader {
    let headerLocation = headerView.frame
    var pressedSection: Int!
    print("header loc: ", headerLocation)

    for section in 0 ... tableData.count - 1 {
        print(MyTableView.rect(forSection: section))
        let sectionRect = MyTableView.rect(forSection: section)
        if(sectionRect.contains(headerLocation)) {
            pressedSection = section
        }
    }
}

Мне нужно обновить массив tableData, так как это настраиваемая кнопка для удаления раздела. Однако, когда я нажимаю кнопку в разделе first , приложение вылетает (ressedSection = nil), и я вижу этот вывод для прямоугольника:

(0.0, 1.1754943508222875e-38, 337.5, 207.4468085106383)

Что явно указывает на странное значение для позиции y. Я думаю, что это из-за .leastNormalMagnitude. Когда я удаляю код выше для tableHeaderFrame, ошибка исчезла, но интервал вернулся. Как я могу решить обе проблемы: позволить значениям кадра быть «нормальными» и убрать верхний отступ / пробел?

...