¿Cómo utilizar el método de proxy de actualización desplegable de vista de tabla en iOS sin una vista de desplazamiento?
- (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>
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){ p>
HWLog(@"Solicitud fallida-@", error);
//Finalizar actualización
vista de tabla propia . >
}];
}
4. Implementar scrollViewDidScroll
-(void)scroll viewdidscroll: (vista de desplazamiento ui *)vista de desplazamiento p>
{
//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];
}
}