Иам иметь UItableview, который заполняется из массива и списка. Если я выбираю любую строку из выпадающего списка массива будут вставлены новые ценности и TableView должна перезагрузить. Как анимировать TableView с новым содержанием массив ? спасибо заранее
анимация, как я хочу показать строки по одному . я пробовал этот метод
- (void)reloadRowsAtIndexPaths:(NSArray )indexPaths withRowAnimation:(UITableViewRowAnimation)animation {
NSIndexPath rowToReload = [NSIndexPath indexPathForRow:[names count] inSection:0];
NSArray* rowsToReload = [NSArray arrayWithObjects:rowToReload, nil];
[tableDetails reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationNone];
}
Чтобы добавить к правильному ответу, если вы хотите перезагрузить все раздела в UITableView` вам нужно выполнить следующие действия:
Форматы
NSRange range = NSMakeRange(0, [self numberOfSectionsInTableView:self.tableView]);
NSIndexSet *sections = [NSIndexSet indexSetWithIndexesInRange:range];
[self.tableView reloadSections:sections withRowAnimation:UITableViewRowAnimationAutomatic];
Стриж
let range = NSMakeRange(0, self.tableView.numberOfSections)
let sections = NSIndexSet(indexesIn: range)
self.tableView.reloadSections(sections as IndexSet, with: .automatic)
Это позволит загрузить все в виде таблицы с анимацией. Как босс.
Свифт 3
UIView.transition(with: myTableView, duration: 1.0, options: .transitionCrossDissolve, animations: {self.myTableView.reloadData()}, completion: nil)
Свифт 2
UIView.transitionWithView(myTableView, duration: 1.0, options: .TransitionCrossDissolve, animations: {self.myTableView.reloadData()}, completion: nil)
Я пошел с этим в Swift
Вы сначала расскажите в TableView, чтобы ожидать обновления на <код>beginUpdates</код>. Тогда обновление соответствующих разделов (если ваша таблица имеет только один раздел, то просто сдать нулевой номер раздела). Здесь's, где вы укажите анимация - вы можете играть вокруг с этим, чтобы получить эффект, который вы хотите. После того, что вы называете <код>endUpdates</код> на TableView для. В typedef для UITableViewRowAnimation указывает:
typedef enum {
UITableViewRowAnimationFade,
UITableViewRowAnimationRight,
UITableViewRowAnimationLeft,
UITableViewRowAnimationTop,
UITableViewRowAnimationBottom,
UITableViewRowAnimationNone,
UITableViewRowAnimationMiddle,
UITableViewRowAnimationAutomatic = 100
} UITableViewRowAnimation;
Играть вокруг, чтобы увидеть, какой вы хотите. Даже выбрав в <код>В UITableViewRowAnimationNone в< код>, который может иметь хороший эффект иногда. Таблица кодов обновления ниже:
[self.tableView beginUpdates];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
В Свифт-3 Вы можете просто добавить следующие расширение
в UITableView
:
extension UITableView {
func reloadData(with animation: UITableView.RowAnimation) {
reloadSections(IndexSet(integersIn: 0..<numberOfSections), with: animation)
}
}
вы можете использовать reloadSections:withRowAnimation:
функции. Проверьте класс UITableView Reference.
Проверить это reloadData с Animation, который уже ответил на ваш вопрос.
Я пробовал это и моя "таблица" анимированные
с плавной анимацией
//Поместите этот код, где вы хотите, чтобы перезагрузить ваш вид таблицы
dispatch_async(dispatch_get_main_queue(), ^{
[UIView transitionWithView:<"TableName">
duration:0.1f
options:UIViewAnimationOptionTransitionFlipFromRight
animations:^(void) {
[<"TableName"> reloadData];
} completion:NULL];
});
Ниже метод поддерживается метод TableView для анимации :
- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);
Использование :
//Reload tableView with animation
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationRight];
Различные типы анимации доступны :
typedef NS_ENUM(NSInteger, UITableViewRowAnimation) {
UITableViewRowAnimationFade,
UITableViewRowAnimationRight, // slide in from right (or out to right)
UITableViewRowAnimationLeft,
UITableViewRowAnimationTop,
UITableViewRowAnimationBottom,
UITableViewRowAnimationNone, // available in iOS 3.0
UITableViewRowAnimationMiddle, // available in iOS 3.2. attempts to keep cell centered in the space it will/did occupy
UITableViewRowAnimationAutomatic = 100 // available in iOS 5.0. chooses an appropriate animation style for you };
Надеюсь, это может помочь!
Попробуйте изменить анимации при переходе видом во время перезагрузки UITableView
[UIView transitionWithView:_yourTableView
duration:0.40f
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^(void) {[_yourTableView reloadData];}
completion:nil];