9

Я настраиваю UIRefreshControl в моем uitableviewcontroller, но есть большой разрыв между навигационной панелью и вершиной uitableview. Воспроизведение с помощью «настроек прокрутки» не помогает, поскольку контроллер будет закладывать навигационную панель при запуске. Я могу отключить «под верхними барами», но я хочу эту способность при прокрутке. Когда вы возились в отладчике, я заметил, что в разное время таблицаView.contentInset смещается на 82 пункта, что отличается от того, что говорят о смещении 20/64 pt, о которых говорят люди в отношении поведения нового бара ios7. Что тут происходит?Fix UITableViewController offset из-за UIRefreshControl в iOS 7

ответ

24

Обнаружено решение, в то время как тыкать вокруг; надеюсь, что это сэкономит несколько часов!

Мне нужно было создать экземпляр моего UIRefreshControl после viewDidLoad: или не устанавливать его attributedTitle в коде, по крайней мере, до этого (например, если я включил обновление таблицы в IB). Установка строки внутри viewDidLoad: испортит раскладку iOS элемента управления + tableview, но это нормально в пределах viewWillAppear: или позже, как только будет установлена ​​геометрия. И я думаю, что 82 точки - это высота UIRefreshControl. Установка заголовка обновления в IB также могла бы избежать этой проблемы, за исключением того, что я делал это в коде, потому что я не хотел, чтобы каждый раз обновлялся в IB каждый из моих таблиц.

+0

Спасибо за сообщение! Я действительно установил свой атрибут Title моего управления обновлением в viewDidLoad, и он сломал бы макет, если бы это было сделано слишком быстро (до VWA). – adamweeks

+1

Ничего себе, я боролся с этим глупым uirefreshcontrol часами. Спасибо за это! –

+4

Не работал для меня в viewWillAppear, но он работал в viewDidAppear –

Смежные вопросы