2011-10-31 12 views
18

Nella mia applicazione voglio aggiungere l'indicatore di attività sotto UItableview dove si scorrerà tableview ma non so come posso aggiungere l'indicatore di attività laggiù.Come posso aggiungere un indicatore di attività sotto UITableView?

Per elaborare, quando avrò finito lo scorrimento di tableview, per ulteriori dati devo impostare un'opzione di aggiornamento con un indicatore di attività.

l'ho provato nella parte superiore del tableview e ha funzionato, ma non so come posso aggiungerlo sotto il tableview. ecco alcuni esempi di codice ..

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

quindi per favore qualcuno mi dia qualche esempio di codice su come posso farlo.

in realtà sono nuovo nello sviluppo di applicazioni per iPhone. Per favore aiutatemi.

Grazie in anticipo.

risposta

13

Il modo migliore per aggiungere un indicatore di attività è al piè di pagina di 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; 

} 

Aggiungere un pulsante al footerView e impostare l'azione sul pulsante (come necessario). Ecco come funziona la visualizzazione tabella degli store di app. Facendo clic sul pulsante recupera altri dati aggiungi all'array della tabella scorri la tabella senza animazione.

+0

grazie Cercherò che ... – Emon

+0

: mi darai qualche codice sorgente ?? – Emon

+0

hai bisogno di un intero codice o di come codice footview – Anand

0

Un altro modo per aggiungere un indicatore di attività. Controlla se i dati visualizzati non sono uguali al conteggio totale dei dati. Quindi aggiungi una cella in più e aggiungi il pulsante "Visualizza altro". Quando clicco sulla vista più il pulsante nascondi e aggiungo l'indicatore di attività in quella cella. E quando il processo è terminato, ricaricare la vista tabella.

Grazie.

49

Ecco come ho fatto:

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

Poi basta impostare tableFooterView per nil per rimuoverlo.

Nota: 44, btw, è l'altezza predefinita di UITableViewCell quando si utilizza UITableViewStylePlain. È 45 per .

+0

ottima soluzione, grazie – oyatek

+0

Accidenti, questo è stato facile. Grazie molto. – HotFudgeSunday

17

Aggiornamento Swift: -

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 
+0

@cChathuranga Silva..Grazie –