У меня есть UITableView с большим количеством строк.
Это как аккордеон: http://docs.jquery.com/UI/Accordion
Основные ячейки имеют подэлементы, подэлементы имеют также подэлементы. Так что это три уровня tableView.
Хорошо, когда пользователь выбирает ячейку, он расширяет (или сворачивает) ячейки с анимацией строки.
Но мне нужно установить новый размер tableView и scrollView.
Я делаю все это в этом методе:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
Проблема:
Когда пользователь касается ячейки, а затем быстро нажимает на вспомогательную, вторая анимация не выполняется, поэтому подэлементы уровня 2 не отображаются. Но размер был установлен (принимая во внимание, что субэлементы уровня 2 были показаны).
На самом деле я играю со временем, чтобы справиться с этим ... но это действительно отстой.
Вот пример моего кода:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Checking with times (with 0,5 second interval in order to be sure that the previous animation is finished !)
// Setting tableView & scollView heights
[tableView beginUpdates];
if(position.isExpanded == YES)
[tableView reloadRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationBottom];
else
[tableView reloadRowsAtIndexPaths:paths withRowAnimation:UITableViewRowAnimationTop];
[tableView endUpdates];
}
Итак, я хотел бы поймать конец этой анимации.
Или, играя с неким семафором (но у меня всего 1 процесс ...)
Есть идеи, чтобы это исправить?
Пожалуйста, помните в своих ответах, что я действительно новичок в разработке для iPhone.
Спасибо.