Черная полупрозрачная навигационная панель / UITableView / Содержание вставки / Проблемы положения прокрутки - PullRequest
2 голосов
/ 17 августа 2010

Я реализую UITableView, у которого есть индекс по правому размеру, а также заголовки разделов. По сути, я реализую стандартный NSFetchedResultsController, как показано в документации Apple. UITableView содержится в UINavigationController с черной полупрозрачной навигационной панелью. У меня есть верхнее содержимое и вставки скроллера, равные 44, чтобы компенсировать перекрытие навигационной панели таблицы. Даже с установленными вставками у меня возникают некоторые проблемы с использованием UITableView в черной полупрозрачной навигационной панели, которые, я считаю, связаны между собой.

Когда я прикасаюсь к элементу в столбце индекса, чтобы перенести меня в этот раздел, заголовок раздела «висит» в правильном месте (встает прямо под панелью навигации), но первая ячейка кажется сдвинутой на одну позицию вверх. Я думаю, что таблица не знает о перекрытии навигационной панели, поэтому она позиционирует первую ячейку, куда бы она пошла, если бы заголовок был в верхней части фрейма окна, но ниже заголовка (если это имеет смысл). Это сложно объяснить, поэтому я прилагаю скриншот, чтобы проиллюстрировать это. Первый «Билли», который скрыт, должен находиться в месте расположения второго «Билли», который скрыт под заголовком раздела «B».

(упс, слишком большой нуб для размещения изображений. http://dontgoplastic.com/temp/uitableview.png)

Вторая проблема связана с той же таблицей, но в отношении selectRowAtIndexPath: animated: scrollPosition :. Если я попытаюсь использовать «UITableViewScrollPositionNone» для «scrollPosition» и установить indexPath на что-то, находящееся ниже текущего видимого экрана, оно смещает таблицу вниз (как и ожидалось), но, как я предполагаю, меньше, чем 44 пикселя. Опять же, я думаю, что таблица считает, что ячейка видна, но не учитывает вставку.

Надеюсь, я просто смотрю на простую собственность.

Спасибо за ваше время

1 Ответ

2 голосов
/ 17 августа 2010

Я все еще не 100%, что идет не так, но я могу исправить это, создав подкласс UITableView и отредактировав setContentOffset: animated: примерно так:

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated {
CGPoint newOffset = CGPointMake(contentOffset.x, contentOffset.y - 44);
[super setContentOffset:newOffset animated:animated];
}

Надеюсь, это либо поможет пролить свет на мою проблему, либо поможет кому-нибудь еще с возможным решением.

Спасибо.

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