Colección de citas famosas - Slogan de motivación - ¿Cómo ingresar al modo de edición en ios tableview?

¿Cómo ingresar al modo de edición en ios tableview?

Las operaciones de edición relacionadas con UITableView son muy completas. Hoy hagamos un resumen. Las propiedades e interfaces relacionadas con la edición son las siguientes. Analicémoslos uno por uno. Primero leamos atentamente los archivos de encabezado relevantes. Probablemente traduje los comentarios según su significado.

Método de propiedad

@property (nonatomic, getter=isEditing) Edición BOOL;

//El estado predeterminado no es editable. Si no llama a la siguiente interfaz para configurarla directamente, no habrá animación.

-(void)edición de conjunto:(BOOL)edición animada:(BOOL)animada;

Fuente de datos

//Cuando el botón de aumentar o disminuir está presionado, Devoluciones de llamada para procesar datos y UI.

//La uitableviewroaction agregada después de la versión 8.0 no está dentro del alcance de control de esta devolución de llamada. La uitableviewroaction tiene un bloque de devolución de llamada separado.

- (void)tableView:(UITableView *)? vista de tabla commitEditingStyle:(UITableViewCellEditingStyle)estilo de edición para rowatindexpath:(NSIndexPath *)index path;

//Después de implementar esta devolución de llamada, habrá un botón para cambiar la posición y se utilizará la devolución de llamada en sí para manejar el cambio de posición.

-(void)vista de tabla:(UITableView *)vista de tabla moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath to indexpath:(NSIndexPath *)destinationIndexPath;

//Esta devolución de llamada determina el valor actual indexPath Si las celdas son editables.

-(BOOL)vista de tabla:(UITableView *)vista de tabla canEditRowAtIndexPath:(NSIndexPath *)ruta de índice;

//Esta devolución de llamada determina si la celda en la ruta de índice actual se puede movido.

-(BOOL)vista de tabla:(UITableView *)vista de tabla canMoveRowAtIndexPath:(NSIndexPath *)ruta de índice;

Representa

//Esta devolución de llamada es crítica , devuelve el estilo de edición de la celda.

-(UITableViewCellEditingStyle)vista de tabla:(UITableView *)vista de tabla estilo de ediciónforrowatdinexpath:(NSIndexPath *)ruta de índice;

//Eliminar texto del botón

- ( Cadena NS anulable *)vista de tabla:(UITableView *)vista de tabla títuloparaeliminarconfirmaciónbotónforrowatdinexpath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(3_0)_TVOS_PROHIBITED;

//8.0 parte trasera La nueva interfaz del menú deslizante admite múltiples botones deslizantes laterales.

-(NSArray anulable & ltUITableViewRowAction * & gt*)vista de tabla:(UITableView *)vista de tabla editactionsforrowatdinexpath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(8_0)_TVOS_forbidden ;

//Esto La interfaz determina si las celdas en estado de edición deben tener sangría.

-(BOOL)vista de tabla:(UITableView *)la vista de tabla debería int whileeditingrowatdindepath:(NSIndexPath *)ruta de índice;

//Estas son dos devoluciones de llamada de estado.

-(void)vista de tabla:(UITableView *)la vista de tabla comenzará a editar la fila endinexpath:(NSIndexPath *)ruta del índice _ _ TVOS _forbidden;

-(void)vista de tabla:(UITableView *) )vista de tabla didendeditingrowatdinexpath:(NSIndexPath *)ruta de índice _ _ TVOS _disabled;

Estado de edición

UITableView controla el estado de edición a través del atributo de edición, llamando a -(void)set edición: (bool)edición animada: la interfaz animada (bool) determina si se utiliza la animación de transformación nativa.

Cuando se llama a esta interfaz y la edición está configurada en SÍ, UITableView comenzará a preguntar qué celdas deben editar el delegado y cómo editarlas.

Primero llame al método de devolución de llamada - (bool)table view:(uitableview *)table view caneditrowatingindexpath:(nsindexpath *)indexpath;, aquí debe devolver SÍ;

Luego, para cada celda llama al método -(uitableviewCelleditingstyle)vista de tabla:(uitableview *)vista de tabla estilo de ediciónforrowatdinexpath:(nsindexpath *)ruta de índice para obtener el estilo de edición;

typedef NS_ENUM(NSInteger, UITableViewCellEditingStyle) {

UITableViewCellEditingStyleNone,

UITableViewCellEditingStyleDelete,

UITableViewCellEditingStyleInsert

};

Hay tres enumeraciones de estilos de edición, con combinaciones de operaciones de bits utilizadas para diferentes propósitos.

uitableviewcelleditingstylenone no tiene estilo de edición.

uitableviewcelleditingstyleeliminar eliminar estilo (signo menos rojo a la izquierda)

uitableviewcelleditingstyle insertar insertar estilo (signo más verde a la izquierda)

uitableviewcelleditingstyle eliminar | modo de selección, con una marca de verificación azul a la izquierda.

Presta especial atención al hecho de que el movimiento de la derecha aquí no está controlado y solo aparecerá si se implementa la siguiente devolución de llamada.

-(void)vista de tabla:(UITableView *)vista de tabla moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath to indexpath:(NSIndexPath *)destinationIndexPath;

Además, para los principiantes, usted Debe comprender que la devolución de llamada aquí no opera en la interfaz de usuario y los datos. Los desarrolladores deben completar las operaciones correspondientes en la devolución de llamada. Por ejemplo, eliminar o agregar un dato debe realizarse en

-(void)vista de tabla:(UITableView *)vista de tabla commitEditingStyle:(UITableViewCellEditingStyle)estilo de edición para filatdinexpath:(NSIndexPath *)ruta de índice ;

En la devolución de llamada anterior, el juicio se realiza en función del estilo de edición y se procesan la interfaz de usuario y los datos correspondientes.

Actualizaciones de datos e interfaz de usuario

No hay nada que decir sobre las actualizaciones de datos. Simplemente opere el contenedor de datos directamente, ya sea una matriz, un diccionario o CoreData. Las actualizaciones de la interfaz de usuario requieren métodos TableView. Si no se pueden cumplir los requisitos de reloadData, se debe utilizar el siguiente método.

- (void) Iniciar actualización; //Permite múltiples operaciones de inserción/eliminación en filas y secciones al mismo tiempo. Nestable

- (nulo) actualización final; //Solo llame a insertar/eliminar/recargar para llamar o cambiar el estado de edición dentro del bloque de actualización. De lo contrario, cosas como el número de filas. Puede que no sea válido.

-(void)insertar secciones:(NSIndexSet *)secciones con animación de fila:(uitableviewroanification)animación

-(void)eliminar secciones:(NSIndexSet *)secciones con animación de fila; :(uitableviewroanification)animación;

-(void)recargar secciones:(NSIndexSet *)secciones con animación de fila:(uitableviewroanification)animación NS _ DISPONIBLE _ IOS(3 _ 0

-(void)mover sección:(NSInteger)sección a sección:(NSInteger)nueva sección NS _ AVAILABLE _ IOS(5 _ 0

-(void)insertrowsatindexpath:(NSArray & lt; NSIndexPath); * & gt*)rutas de índice conRowAnimation:(uitableviewroanification)animación;

-(void)deleteRowsAtIndexPaths:(NSArray & lt;NSIndexPath * & gt*)rutas de índice conRowAnimation:(uitableviewroanification)animación;

-(void)reloadrowsatindexpath:(NSArray & lt; NSIndexPath * & gt*)rutas de índice conRowAnimation:(UITableViewRowAnimation)animación NS_AVAILABLE_IOS(3_0);

-(void )moveRowAtIndexPath:(NSIndexPath * )indexPath a indexPath:(NSIndexPath *)new indexPath NS_AVAILABLE_IOS(5_0);

BeginUpdates y endUpdates se utilizan para empaquetar cuando necesita procesar por lotes las celdas de su código de procesamiento. Los nombres de otros métodos son más intuitivos, por lo que no los presentaré uno por uno.