AccessoryView UITableViewCell исчезает после изменения видимого представления - PullRequest
2 голосов
/ 10 января 2011

Я испытываю эту странную ситуацию. У меня есть UITableView, где, когда пользователь выбирает ячейку, начинается длинный (сетевой) процесс. Итак, я выполнил это в фоновом потоке и поместил (в didSelectRowAtIndexPath) UIActivityIndicatorView в качестве вспомогательного представления. Вот что я написал:

UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:indexPath];
UIActivityIndicatorView* activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
cell.accessoryView = activityView;
[activityView startAnimating];
[activityView release];

кажется, что все работает правильно, за исключением того, что, если во время процесса загрузки (когда индикатор анимирован), я переключаю представление с помощью UITabBar, когда я возвращаюсь к UITableView, UIActivityIndicatorView, который должен быть там, исчез , Есть идеи, что я сделал не так? Спасибо!

Ответы [ 2 ]

2 голосов
/ 21 февраля 2011

Я оглядывался назад на эту проблему, и ... прочитав вопрос сейчас, я смеюсь :-) Ответ на мой собственный вопрос: ничего плохого в коде, он работает очень хорошо ... но делая UIActivityIndicatorView белым ... затрудняет его просмотр на белом фоне :-D :-D Размещенный код правильный.

1 голос
/ 10 января 2011

Когда вы возвращаетесь к табличному представлению после перехода на другую вкладку, cellForRowAtIndexPath: сообщения отправляются в контроллер табличного представления для отображения ячеек таблицы, но представление индикатора активности было установлено как вспомогательное представлениеячейка в методе didSelectRowAtIndexPath:.Таким образом, по сути, вы изменили ячейку (то есть отобразили представление индикатора активности), когда ячейка была выбрана, но когда вы оставили представление и вернулись, метод cellForRowAtIndexPath: использовался для повторного отображения ячейки (и, следовательно, нетпредставление индикатора активности).

Вы должны будете отслеживать, какие ячейки в настоящее время имеют представления индикатора активности, и убедиться, что вы установили вспомогательное представление этих ячеек с UIActivityIndicatorView в * 1009.* метод.Очевидно, что если действие, связанное с ячейкой, завершено, не отображайте представление индикатора активности для этой ячейки, поэтому вам придется отслеживать, завершены ли действия еще или нет.Есть много способов сделать это, поэтому вам придется решить, что лучше всего подходит для вашей ситуации.

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

...