UITableview reloaddata с анимацией

Иам иметь 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];
 }
Комментарии к вопросу (3)

Чтобы добавить к правильному ответу, если вы хотите перезагрузить все раздела в 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) 

Это позволит загрузить все в виде таблицы с анимацией. Как босс.

Комментарии (7)

используйте этот метод,

[_tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
Комментарии (3)

Свифт 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

Комментарии (1)

Вы сначала расскажите в 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];
Комментарии (0)

В Свифт-3 Вы можете просто добавить следующие расширение в UITableView:


extension UITableView {
    func reloadData(with animation: UITableView.RowAnimation) {
        reloadSections(IndexSet(integersIn: 0..
Комментарии (2)

вы можете использовать reloadSections:withRowAnimation: функции. Проверьте класс UITableView Reference.

Проверить это reloadData с Animation, который уже ответил на ваш вопрос.

Комментарии (5)

Я пробовал это и моя "таблица" анимированные с плавной анимацией

//Поместите этот код, где вы хотите, чтобы перезагрузить ваш вид таблицы

dispatch_async(dispatch_get_main_queue(), ^{
    [UIView transitionWithView: 
                      duration:0.1f 
                       options:UIViewAnimationOptionTransitionFlipFromRight 
                    animations:^(void) {
                        [ reloadData];
                    } completion:NULL];        
});
Комментарии (1)

Ниже метод поддерживается метод 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    };

Надеюсь, это может помочь!

Комментарии (0)

Попробуйте изменить анимации при переходе видом во время перезагрузки UITableView

[UIView transitionWithView:_yourTableView 
                  duration:0.40f 
                   options:UIViewAnimationOptionTransitionCrossDissolve 
                animations:^(void) {[_yourTableView reloadData];}  
                completion:nil];
Комментарии (0)