Как я могу добавить индикатор активности под UITableView?
В моем приложении я хочу добавить индикатор активности в UItableview, где будет отображаться табличное представление, но я не знаю, как я могу добавить индикатор активности там.
Чтобы уточнить, когда я закончу прокрутку таблицы, тогда для получения большего количества данных я должен установить параметр обновления индикатором активности.
Я пробовал его в верхней части таблицы, и он работал, но я не знаю, как добавить его под табличным представлением. вот несколько примеров кода.
- (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];
}
}
так что, пожалуйста, кто-нибудь даст мне примерный код о том, как я могу это сделать.
На самом деле я новичок в разработке приложений iphone. Поэтому, пожалуйста, помогите мне.
Спасибо в Advance.
Ответы
Ответ 1
Лучший способ добавить индикатор активности - нижний колонтитул таблицы.
- (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;
}
Добавьте кнопку в footerView и установите действие на кнопку (по мере необходимости). Это выглядит так, как работает приложение table store. При нажатии кнопки выберите еще несколько данных, добавьте в массив таблицы прокрутку таблицы без анимации.
Ответ 2
Вот как я это сделал:
UIActivityIndicatorView *spinner = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray] autorelease];
[spinner startAnimating];
spinner.frame = CGRectMake(0, 0, 320, 44);
self.tableView.tableFooterView = spinner;
Затем вы просто установите tableFooterView
на nil
, чтобы удалить его.
Примечание:
44, btw, является высотой по умолчанию a UITableViewCell
при использовании UITableViewStylePlain
.
Это 45 для UITableViewStyleGrouped
.
Ответ 3
Быстрое обновление: -
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
Ответ 4
Еще один способ добавить индикатор активности. Проверьте, не отображаются ли ваши данные, равные общему количеству данных. Затем вы добавите одну дополнительную ячейку и добавьте кнопку "Просмотреть больше". Когда я нажимаю на вид больше, скройте эту кнопку и добавьте индикатор активности в эту ячейку. И когда процесс будет выполнен, перезагрузите представление таблицы.
Спасибо.