Сгруппированный нижний колонтитул UITableView, иногда скрытый при быстрой прокрутке - PullRequest
2 голосов
/ 07 октября 2009

ОК, это головоломка. Существует одно подобное сообщение , но его недостаточно для подсчета, поэтому я публикую это. :)

У меня есть сгруппированный UITableView с верхним и нижним колонтитулом. Нижний колонтитул включает в себя два вида UIButton , расположенных рядом друг с другом. Ничего особенного.

Теперь ... в UIToolbar внизу есть кнопка для более или менее подробной информации в этом табличном представлении. Поэтому я строю свои пути индекса для удаления / вставки с помощью анимации постепенного исчезновения строк, все обычные ингредиенты, помещенные между beginUpdates и endUpdates вызовами UITableView …, и это прекрасно работает! Также бывает, что мой нижний колонтитул иногда можно отодвинуть за нижнюю часть экрана.

Вот где это становится странным. Если я перетащу палец вверх по экрану, прокручивая вид вверх, в конце концов я должен увидеть этот нижний колонтитул, верно?

Ну ... большую часть времени я делаю. НО, если я щелкну пальцем вверх, для более быстрой прокрутки нижний колонтитул будет отсутствует . Даже если вы попытаетесь нажать в этой области - нет ответа.

Однако, если я снова прокручиваю вниз, просто чтобы скрыть этот нижний колонтитул (или, точнее, скрыть область, где обычно находится нижний колонтитул), а затем прокручивать назад вверх, он снова там!

Это происходит только при вставке строк. Если я удаляю строки, нижний колонтитул остается на месте ... если, конечно, он не был уже скрыт, и я не выполнил вышеупомянутое заклинание, чтобы вернуть его. :)

Я пытаюсь отследить это, но безрезультатно. Я полагаю, что отслеживание с помощью операций прокрутки является сумасшедшим предложением! Может быть, какие-то творческие записи ... предложения, кто-нибудь? Или это известная проблема в 3.1, когда речь идет о вставке / удалении строк? (Я не помню, чтобы увидеть его до 3.1.)

Ответы [ 2 ]

0 голосов
/ 08 июня 2010

Хорошо, продолжая работу с нашим приложением, я чаще сталкиваюсь с проблемой перерисовки. После изучения часов и часов кажется, что есть только одно решение [tableView reloadData]. Но есть лучшее решение (чем в моем первом ответе) для сломанной анимации. Вы можете получить вызов метода, как только анимация закончится, и «вспышки» больше не будет:

[UIView beginAnimations:nil context:[NSNumber numberWithInt:section]];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
...do something on the table..
and commitAnimation

В вашем animationDidStop перезагрузите таблицу.

Но все еще сложно найти правильный момент / событие для перезагрузки, особенно если вы работаете с fetchedResultsController, который самостоятельно запускает методы его делегата, как только изменяется атрибут, который используется для сортировки.

Все это по-прежнему является упражнением в программировании вокруг проблемы с обновлением представления ячейки, которой не должно быть.

0 голосов
/ 26 апреля 2010

Вы пытались что-то изменить в нижнем колонтитуле в методе, который вы вызываете с помощью кнопок нижнего колонтитула, например, изменить текст на UILabel в нижнем колонтитуле? Это то, что я пытаюсь сделать. НО: нижний колонтитул не обновляется. Или, если быть более точным: он обновляется, но не на экране. Прокрутка нижнего колонтитула из видимого массива и обратно показывает правильный нижний колонтитул. Так что есть проблема с обновлением.

Так, возможно, вы видите ту же проблему перерисовки?

Я пытался вызвать все методы (needslayout needsDisplay и т. Д. И т. Д.), Но ничего не получалось. Единственный способ решить эту проблему - перезагрузить таблицу или раздел, но это убивает мою rowAnimation. Затем я попытался вызвать перезагрузку через уведомление, надеясь, что анимация завершится до вызова уведомления. Нету. В конце я использую запланированный таймер для перезагрузки данных с задержкой 100-200 мс, запущенной в начале моих строк вставки / удаления. Итак, анимация закончена перед загрузкой.

Похоже, что он работает сейчас, но цена короткая "вспышка" с неправильным нижним колонтитулом, прежде чем он будет обновлен.

UPDATE

Хорошо, с поддержкой Skie я решил свою проблему с перерисовкой. Пожалуйста, обратитесь это .

Я не уверен, что этот подход или, по крайней мере, идея может решить и ваш, но, возможно, ....

...