Colección de citas famosas - Slogan de motivación - ¿Cómo utilizar el método de proxy de actualización desplegable de vista de tabla en iOS sin una vista de desplazamiento?

¿Cómo utilizar el método de proxy de actualización desplegable de vista de tabla en iOS sin una vista de desplazamiento?

1. En TableView, tan pronto como abrimos el software, se llama al evento de actualización desplegable.

- (void)viewDidLoad {

[Super viewDidLoad];

//Control de actualización integrado

[Actualización de configuración automática]

}

/**

*Actualización desplegable integrada

*/

-( void) configuración Actualizar

{

//1. Agregar control de actualización

UIRefreshControl * control =[[UIRefreshControl alloc]init];

[ control agregar destino: acción propia: @ selector(refreshStateChange:) para eventos de control: UIControlEventValueChanged];

[self. Ingrese inmediatamente. Actualizar el estado no activa el evento UIControlEventValueChanged.

[Control de inicio de actualización];

// 3. Cargar datos

[Cambio de estado de actualización automática: control];

}

2. A continuación, implementaremos el método refrescoStateChange, que muestra datos y cierra la actualización desplegable.

/**

* UIRefreshControl ingresa al estado de actualización: cargando los datos más recientes.

*/

-(void)refreshStateChange: control (UIRefreshControl *)

{

// 3. Enviar solicitud

p>

AFHTTPRequestOperationManager * mgr =[AFHTTPRequestOperationManager manager];

[mgr get: @ "/2/status/public _ timeline . JSON "Parámetro: éxito nulo: ^( operación afhttprequest *, NSDictionary *responseObject){

//1. Obtenga datos, procese los datos y páselos a tableView, por ejemplo:

//Agregue los datos más recientes de Weibo. al frente del grupo.

//ns rango rango = nsmakerage(0, newstatuses . count);

//NSIndexSet * set =[NSIndexSet indexSetWithIndexesInRange: rango];

/ /[self. estado insertar objetos: nuevosEstados en índices: establecer];

//2. Actualizar la tabla

[self. p >// 3. Finalizar actualización

[El control finaliza la actualización];

} falla: ^(afhttprequestoperación *operación, nserror *error){

/ / Finalizar actualización de actualización. Para evitar fallas en la carga de la red, muestre siempre un error de estado de actualización.

[El control finaliza la actualización];

}];

}

Desplegando hacia arriba para actualizar

La actualización pull-up se utiliza normalmente para solicitudes de paginación. Después de desplazarse hasta el final, la página siguiente se carga automáticamente. Tomemos como ejemplo la carga de datos de Sina Weibo.

Primero, debido a que descargar y cargar más datos es un control de diseño inmutable, usaremos xib para implementarlo.

HWLoadMoreFooter.h

#Importar kit ltui/kit ui h gt;

@ interfaz HWLoadMoreFooter: vista de interfaz de usuario

(tipo de instancia). ) pie de página;

@end

HWLoadMoreFooter.m

#import "HWLoadMoreFooter.h "

@implement HWLoadMoreFooter

(tipo de instancia) pie de página

{

return[[[paquete principal del paquete ns]loadNibNamed:@ " HWLoadMoreFooter " propietario: nil opciones: nil]último objeto];

}

@end

A continuación, configuramos un xib llamado HWLoadMoreFooter.

A continuación, debe establecer las siguientes tres posiciones:

Luego arrastre una etiqueta al cuadro y configúrela para que ocupe toda la vista.

Finalmente, haga clic en el cuadro rojo a continuación para actualizar el marco.

Una vez creado el xib, implementemos el código de actualización pull-up.

2. Implementar el código.

1. Al cargar en TabelView, el control se carga primero.

- (void)viewDidLoad {

[Super viewDidLoad];

//Control de actualización desplegable integrado

[autoconfiguración prefresh] ;

//Control de actualización pull-up integrado

[actualización automática de configuración];

}

2. Métodos de actualización pull-up

/**

*Actualización pull-up integrada

*/

-(void)setupDownRefresh

{

HWLoadMoreFooter * footer =[HWLoadMoreFooter];

footer.hidden = YES

self vista de tabla .

}

3. Método de solicitud de datos asincrónicos

- (void)Cargar más estados

{

// 1. Administrador de solicitudes

AFHTTPRequestOperationManager * mgr =[AFHTTPRequestOperationManager manager];

// 2. Parámetros de solicitud de empalme

Cuenta HW * cuenta =[HW cuenta de herramienta de cuenta ];

NSMutableDictionary * params =[NSMutableDictionary diccionario];

params[@ " access _ token "]= cuenta access _ token;

// Saque el último Weibo (el último Weibo, el Weibo con el ID más grande).

Estado de HW * último estado =[self . estado último objeto];

if (lastStatus) {

//Si se especifica este parámetro, el ID Se devuelve Weibo que es menor o igual que max_id, el valor predeterminado es 0.

//Los datos de identificación son generalmente relativamente grandes. Si generalmente se convierte a un número entero, es mejor utilizar el tipo largo y largo.

long long maxId = último estado. idstr. longlong valor-1

params[@ " max _ id "]= @(maxId); }

// 3. Enviar solicitud

[mgr get: @ "/2/status/friends _ timeline . JSON "Parámetros: parámetros exitosos: ^(afhttprequestoperación * operación, NSDictionary *responseObject) {

//Convierta la matriz "Diccionario Weibo" en la matriz "Modelo Weibo".

NSArray * new status =[HW status objectArrayWithKeyValuesArray: Response object[@ " status "]];

//Agrega más datos de Weibo al final del grupo total.

[self . status addObjectsFromArray: newStatuses];

//Actualizar la tabla

[self . > //Finalizar actualización (ocultar pie de página)

self . tablefooterview . oculto = YES

} error: ^(afhttprequestoperación *operación, nserror *error){

HWLog(@"Solicitud fallida-@", error);

//Finalizar actualización

vista de tabla propia . >

}];

}

4. Implementar scrollViewDidScroll

-(void)scroll viewdidscroll: (vista de desplazamiento ui *)vista de desplazamiento

{

//vista de desplazamiento = = self. vista de tabla = = self.

//Si no hay datos en tableView, regrese directamente.

if(self . status . count == 0 | | self . table view . tablefooterview . is hide == NO) devuelve

CG float offsetY = desplazamiento de contenido de vista. . y;

//El valor y de contentOffset cuando la última celda se muestra por completo.

CG float JudgeOffsetY = vista de desplazamiento. Tamaño del contenido. Vista de desplazamiento de altura.

si (desactivado). gt; = JudgeOffsetY) {//La última celda entra completamente en el campo de visión.

//Mostrar pie de página

self. vista de tabla. tablefooterview oculto = NO;

//Cargar más datos de Weibo.

[self loadMoreStatus];

}

}