#iphone #uitableview #animation
#iPhone #uitableview #Анимация
Вопрос:
Я новичок в iphone, пожалуйста, помогите мне, в моем приложении отображаются данные о доступе к tableview с sql Server через веб-службы, но моя проблема в том, что при вставке новой строки и добавлении в tableview в tableview добавляется вновь введенная строка, но она добавляется нормально, я хочу добавить анимацию при добавлении новой строки в tableview. Я не знаю, как добавить анимацию в tableview после ввода новой записи, у кого есть какие-либо идеи, пожалуйста, скажите мне.
Ответ №1:
Чтобы вставить строку:
int rowIndex = 0;//your row index where you want to add cell
int sectionIndex = 0;//your section index
NSIndexPath *iPath = [NSIndexPath indexPathForRow:rowIndex inSection:sectionIndex];
NSArray *array = [NSArray arrayWithObject:iPath];
[self.tableView insertRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationFade];
Но вам нужно убедиться, что у вас есть дополнительная запись с указанным индексом в вашем dataSourse
массиве (массив, который вы используете для заполнения данных в вашей таблице).
Ответ №2:
insertRowsAtIndexPaths:с помощью анимации:
Вставляет строки в приемник в местоположениях, определенных массивом индексных путей, с возможностью анимировать вставку.
- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
Комментарии:
1. спасибо, но я понятия не имею, как использовать этот метод, не могли бы вы, пожалуйста, привести пример кода.
Ответ №3:
Вы могли бы использовать метод - (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
UITableView.
Ответ №4:
Проблема: Итак, если вы вставляете данные поверх tableview, то пользователю приходится прокручивать вниз, чтобы найти, где он остановился?
Решение: почему бы не сделать эту прокрутку вниз для пользователя, рассчитав смещение и установив смещение до завершения обновления tableview.
Как вычислить это смещение? (количество ячеек, вставляемых сверху) * (высота ячеек)
Примечание: в приведенном ниже примере / вычислении я вычитаю две ячейки из количества вставляемых ячеек, чтобы дать пользователю возможность предварительного просмотра данных сверху
[strongSelf.tableView beginUpdates];
//INSERT DATA amp; CELLS ON TOP
//REMOVE DATA ON BOTTOM IF NECESSARY
//moving scrollview right back down so user can resume where last left off
NSInteger estimatedRow = strongSelf.tableView.rowHeight * ( (indexPathsAdding.count) - 2);
[strongSelf.tableView setContentOffset:CGPointMake(0, estimatedRow)];
[strongSelf.tableView endUpdates];