Я реализую UITableView, у которого есть индекс по правому размеру, а также заголовки разделов. По сути, я реализую стандартный NSFetchedResultsController, как показано в документации Apple. UITableView содержится в UINavigationController с черной полупрозрачной навигационной панелью. У меня есть верхнее содержимое и вставки скроллера, равные 44, чтобы компенсировать перекрытие навигационной панели таблицы. Даже с установленными вставками у меня возникают некоторые проблемы с использованием UITableView в черной полупрозрачной навигационной панели, которые, я считаю, связаны между собой.
Когда я прикасаюсь к элементу в столбце индекса, чтобы перенести меня в этот раздел, заголовок раздела «висит» в правильном месте (встает прямо под панелью навигации), но первая ячейка кажется сдвинутой на одну позицию вверх. Я думаю, что таблица не знает о перекрытии навигационной панели, поэтому она позиционирует первую ячейку, куда бы она пошла, если бы заголовок был в верхней части фрейма окна, но ниже заголовка (если это имеет смысл). Это сложно объяснить, поэтому я прилагаю скриншот, чтобы проиллюстрировать это. Первый «Билли», который скрыт, должен находиться в месте расположения второго «Билли», который скрыт под заголовком раздела «B».
(упс, слишком большой нуб для размещения изображений. http://dontgoplastic.com/temp/uitableview.png)
Вторая проблема связана с той же таблицей, но в отношении selectRowAtIndexPath: animated: scrollPosition :. Если я попытаюсь использовать «UITableViewScrollPositionNone» для «scrollPosition» и установить indexPath на что-то, находящееся ниже текущего видимого экрана, оно смещает таблицу вниз (как и ожидалось), но, как я предполагаю, меньше, чем 44 пикселя. Опять же, я думаю, что таблица считает, что ячейка видна, но не учитывает вставку.
Надеюсь, я просто смотрю на простую собственность.
Спасибо за ваше время