iphone uitableview uiscrollview uiactivityindicatorview

iphone - ¿Cómo puedo agregar un indicador de actividad debajo de UITableView?



uiscrollview uiactivityindicatorview (4)

Actualización rápida: -

let pagingSpinner = UIActivityIndicatorView(activityIndicatorStyle: .Gray) pagingSpinner.startAnimating() pagingSpinner.color = UIColor(red: 22.0/255.0, green: 106.0/255.0, blue: 176.0/255.0, alpha: 1.0) pagingSpinner.hidesWhenStopped = true tableView.tableFooterView = pagingSpinner

En mi aplicación, quiero agregar el indicador de actividad en UItableview, donde se visualizará tableview, pero no sé cómo puedo agregar el indicador de actividad allí.

Para más detalles, cuando termine el desplazamiento de la vista de tabla, para obtener más datos, debo configurar una opción de actualización mediante un indicador de actividad.

Lo probé en la parte superior de la vista de tabla y funcionó, pero no sé cómo puedo agregarlo debajo de la vista de tabla. Aquí hay un código de ejemplo ...

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { if (isLoading) return; isDragging = YES; refreshHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, scrollView.contentOffset.y + REFRESH_HEADER_HEIGHT, 320, REFRESH_HEADER_HEIGHT)]; refreshHeaderView.backgroundColor = [UIColor clearColor]; refreshLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, scrollView.contentOffset.y + REFRESH_HEADER_HEIGHT, 320, REFRESH_HEADER_HEIGHT)]; refreshLabel.backgroundColor = [UIColor clearColor]; refreshLabel.font = [UIFont boldSystemFontOfSize:12.0]; refreshLabel.textAlignment = UITextAlignmentCenter; refreshArrow = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"refresharrow.png"]]; refreshArrow.frame = CGRectMake((scrollView.contentOffset.y + REFRESH_HEADER_HEIGHT - 27) / 2, (scrollView.contentOffset.y + REFRESH_HEADER_HEIGHT - 44) / 2, 27, 44); refreshSpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; refreshSpinner.frame = CGRectMake((scrollView.contentOffset.y + REFRESH_HEADER_HEIGHT - 20) / 2, (scrollView.contentOffset.y + REFRESH_HEADER_HEIGHT - 20) / 2, 20, 20); refreshSpinner.hidesWhenStopped = YES; [refreshHeaderView addSubview:refreshLabel]; [refreshHeaderView addSubview:refreshArrow]; [refreshHeaderView addSubview:refreshSpinner]; [tableview addSubview:refreshHeaderView]; } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (isLoading) { // Update the content inset, good for section headers if (scrollView.contentOffset.y > 0){ NSLog(@"scrollView.contentOffset.y 1= %d",scrollView.contentOffset.y ); tableview.contentInset = UIEdgeInsetsZero; } else if (scrollView.contentOffset.y >= -REFRESH_HEADER_HEIGHT){ NSLog(@"scrollView.contentOffset.y 2= %d",scrollView.contentOffset.y ); tableview.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0); } } else if (isDragging && scrollView.contentOffset.y > scrollView.contentOffset.y + REFRESH_HEADER_HEIGHT) { // Update the arrow direction and label [UIView beginAnimations:nil context:NULL]; if (scrollView.contentOffset.y > scrollView.contentOffset.y + REFRESH_HEADER_HEIGHT) { // User is scrolling above the header NSLog(@"scrollView.contentOffset.y 3= %d",scrollView.contentOffset.y ); refreshLabel.text = self.textRelease; [refreshArrow layer].transform = CATransform3DMakeRotation(M_PI, 0, 0, 1); } else { // User is scrolling somewhere within the header refreshLabel.text = self.textPull; [refreshArrow layer].transform = CATransform3DMakeRotation(M_PI * 2, 0, 0, 1); } [UIView commitAnimations]; } } - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { if (isLoading) return; isDragging = NO; if (scrollView.contentOffset.y >= scrollView.contentOffset.y + REFRESH_HEADER_HEIGHT) { // Released above the header [self startLoading]; } }

así que por favor alguien dame un código de ejemplo sobre cómo puedo hacer eso.

En realidad, soy nuevo en el desarrollo de aplicaciones de iPhone.

Gracias por adelantado.


Así es como lo he hecho:

UIActivityIndicatorView *spinner = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray] autorelease]; [spinner startAnimating]; spinner.frame = CGRectMake(0, 0, 320, 44); self.tableView.tableFooterView = spinner;

Luego, solo establece tableFooterView en nil para eliminarlo.

Nota: 44, por cierto, es la altura predeterminada de un UITableViewCell cuando se utiliza UITableViewStylePlain . Son los 45 para UITableViewStyleGrouped .


La mejor manera de agregar un indicador de actividad es al pie de página de tableview.

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { UIView *headerView = [[[UIView alloc] init]autorelease]; [headerView setBackgroundColor:[UIColor clearColor]]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [button addTarget:self            action:@selector(aMethod:)  forControlEvents:UIControlEventTouchDown]; [button setTitle:@"Load More" forState:UIControlStateNormal]; button.frame = CGRectMake(10.0, 210.0, 160.0, 40.0); [headerView addSubview:button]; [headerLabel release]; return headerView; }

Agregue un botón a la vista de pie de página y establezca la acción en el botón (según lo necesite). Así funciona la app storeview de la tienda. Al hacer clic en el botón obtener más datos, agregar a la tabla, desplazar la tabla sin animación.


Una forma más de agregar indicador de actividad. Compruebe si sus datos mostrados no son iguales al recuento total de datos. Luego agrega una celda adicional y agrega el botón "Ver más". Cuando hago clic en la vista más, oculta ese botón y añado un indicador de actividad en esa celda. Y cuando el proceso haya terminado, vuelva a cargar la vista de tabla.

Gracias.