Исчезновение UIView поверх UITableView с разделами

Привет!

Я добавил UIActivityIndicatorView в качестве подвида UITableView. Цель состоит в том, чтобы скрыть это представление после обновления базовой таблицы новыми данными.

Проблема заключается в том, что разделы в табличном представлении (например, A, B, C и т. д.) добавляются после появления индикатора активности, что на мгновение частично блокирует индикатор активности.

Есть ли «лучший способ» (или более правильный способ) делать такие вещи, когда речь идет об индикаторах активности над представлениями таблиц с разделами? Прямо сейчас я делаю это, чтобы исчезнуть представление индикатора активности loading:

CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];
[loading setAlpha:0.0f];
[UIView commitAnimations];

FWIW, вызов эквивалента [myTableView bringSubviewToFront:myActivityIndicatorView], похоже, тоже не помогает.

Кроме того, есть вопрос об удалении loading из супервизора. Я предполагаю, что мне нужно использовать setAnimationDidStopSelector: и передать представление загрузки в качестве контекста (и, возможно, мне действительно не нужна эта строка CGContextRef в конце концов).


person Joe D'Andrea    schedule 21.07.2009    source источник


Ответы (1)


Возможно, будет проще содержать вашу таблицу в UIView в качестве подпредставления, а затем переключаться в представление загрузки в качестве подпредставления, пока ваши данные не будут готовы к отображению.

person Kendall Helmstetter Gelner    schedule 21.07.2009
comment
Ах, спасибо! Итак, у меня было бы родительское представление с двумя подпредставлениями - таблица и представление загрузки, а не создание представления загрузки подпредставлением табличного представления. - person Joe D'Andrea; 21.07.2009
comment
Блеа. Не повезло. Должно быть, я делаю что-то не так. Я поместил таблицу в UIView и привязал ее к IBOutlet через новое свойство topView. (Причина: я заметил, что контроллеры табличного представления предоставляют представление только в IB, которое привязано к табличному представлению, но оба представления и tableView в конечном итоге настроены на одно и то же табличное представление, поэтому новый topView свойство.) Затем я добавляю свой индикатор загрузки UIView в качестве подвида topView, но я никогда его не вижу. Я вижу только табличное представление. Я даже отправил их в начало / конец z-порядка, но безрезультатно. (Я также перепроверил, и topView не равен нулю.) Хм... - person Joe D'Andrea; 24.07.2009
comment
Обычно я создаю IBOutlet типа UITableView с именем myTable и связываю его с IB... Кроме того, перед тем, как вводить представление загрузки, я удаляю UITableView из суперпредставления, а затем возвращаю его после завершения загрузки. - person Kendall Helmstetter Gelner; 24.07.2009
comment
Это только что: я наткнулся на очень удобный класс: bukovinski .com/2009/04/08/mbprogresshud-for-iphone Я также добавил несколько модов (в комментариях к сообщению). - person Joe D'Andrea; 24.07.2009
comment
Просто чтобы привести в порядок этот поток: удаление UITableView из супервизора, а затем добавление его обратно работает чудесно. Другой вариант — сделать HUD подвидом UIWindow, но тогда вам нужно быть осторожным при переключении между представлениями в вашем приложении. Любой работает! - person Joe D'Andrea; 04.09.2009