ios uitableview reloaddata

ios - UITableview reloaddata con animación



(9)

Tengo una UItableview que se llena desde una matriz y una lista desplegable. Si selecciono cualquier fila de la lista desplegable, la matriz se insertará con nuevos valores y TableView debería volver a cargarse. ¿Cómo animar la tabla vista con los nuevos contenidos de la matriz? gracias por adelantado

animación como quiero mostrar la fila uno por uno. probé este método

- (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]; }


El método siguiente es compatible con tableView para animación:

- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);

Uso:

//Reload tableView with animation [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationRight];

Los diferentes tipos de animación disponibles son:

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 };

Espero que esto pueda ayudar!


En Swift 3 puede simplemente agregar la siguiente extension a UITableView :

extension UITableView { func reloadData(with animation: UITableViewRowAnimation) { reloadSections(IndexSet(integersIn: 0..<numberOfSections), with: animation) } }


Intente animar durante la transición Cambio de una vista al volver a cargar UITableView

[UIView transitionWithView:_yourTableView duration:0.40f options:UIViewAnimationOptionTransitionCrossDissolve animations:^(void) {[_yourTableView reloadData];} completion:nil];


Lo he intentado y mi Table está Animated con animación suave

// Pon este código donde quieras volver a cargar tu vista de tabla

dispatch_async(dispatch_get_main_queue(), ^{ [UIView transitionWithView:<"TableName"> duration:0.1f options:UIViewAnimationOptionTransitionFlipFromRight animations:^(void) { [<"TableName"> reloadData]; } completion:NULL]; });


Para agregar a la respuesta correcta, si desea volver a cargar todas las secciones en su UITableView , deberá hacer lo siguiente:

ObjC

NSRange range = NSMakeRange(0, [self numberOfSectionsInTableView:self.tableView]); NSIndexSet *sections = [NSIndexSet indexSetWithIndexesInRange:range]; [self.tableView reloadSections:sections withRowAnimation:UITableViewRowAnimationAutomatic];

Rápido

let range = NSMakeRange(0, self.tableView.numberOfSections) let sections = NSIndexSet(indexesIn: range) self.tableView.reloadSections(sections as IndexSet, with: .automatic)

Esto volverá a cargar todo en la vista de tabla con una animación. Como un jefe.


Primero le dice a tableView que espere actualizaciones con beginUpdates . Luego actualice las secciones relevantes (si su tablaView tiene solo una sección, simplemente pase el cero para el número de sección). Aquí es donde especificas la animación: puedes jugar con ella para obtener el efecto que deseas. Después de eso llamas a endUpdates en tableView. El typedef para UITableViewRowAnimation especifica:

typedef enum { UITableViewRowAnimationFade, UITableViewRowAnimationRight, UITableViewRowAnimationLeft, UITableViewRowAnimationTop, UITableViewRowAnimationBottom, UITableViewRowAnimationNone, UITableViewRowAnimationMiddle, UITableViewRowAnimationAutomatic = 100 } UITableViewRowAnimation;

Juega para ver cuál quieres. Incluso seleccionando UITableViewRowAnimationNone puede tener un buen efecto a veces. Código de actualización de la tabla a continuación:

[self.tableView beginUpdates]; [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone]; [self.tableView endUpdates];



usa este método,

[_tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];


Swift 3

UIView.transition(with: myTableView, duration: 1.0, options: .transitionCrossDissolve, animations: {self.myTableView.reloadData()}, completion: nil)

Swift 2

UIView.transitionWithView(myTableView, duration: 1.0, options: .TransitionCrossDissolve, animations: {self.myTableView.reloadData()}, completion: nil)

Fui con esto en Swift