Проблема вызова TableFooterView (здесь трудно объяснить XD) - PullRequest
0 голосов
/ 12 сентября 2011

У меня есть кнопка «Загрузить больше» с TableFooterView, и когда я прокручиваю вниз до последней ячейки, она автоматически загружает больше ячеек в таблицу. Так что это работает, но есть какая-то ошибка, если я прокручиваю вниз до последней ячейки и не освобождаю палец от экрана и прокручиваю вверх, а затем вниз (не отпуская палец), он снова называется пустотой, поэтому его 2 раза.

код:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (([scrollView contentOffset].y + scrollView.frame.size.height) == [scrollView   contentSize].height) {
    [[self footerActivityIndicatorView] startAnimating];
    [self performSelector:@selector(stopAnimatingFooter) withObject:nil afterDelay:0.5];

    return;
}       

}


- (void) stopAnimatingFooter{
//add the data
[[self footerActivityIndicatorView] stopAnimating];
[self addItemsToEndOfTableView];
[[self tableView] reloadData];

}


- (void) addItemsToEndOfTableView{
NSLog(@"test 123 test 123");


// Parse
NSURL *feedURL = [NSURL URLWithString:@"http://gdata.youtube.com/feeds/api/users/RayWilliamJohnson/uploads?v=2&alt=rss&sort_field=added&start-index=21&max-results=20"];
feedParser = [[MWFeedParser alloc] initWithFeedURL:feedURL];
feedParser.delegate = self;
feedParser.feedParseType = ParseTypeFull; // Parse feed info and all items
feedParser.connectionType = ConnectionTypeAsynchronously;
[feedParser parse];





return;

}

Мне нужно найти способ, которым, даже если я «играю» с последней ячейкой, она вызывается только один раз, пока задача не будет завершена, и снова включу ее.

tnx

1 Ответ

0 голосов
/ 12 сентября 2011

Я предлагаю объявить переменную, например, BOOL working; в вас UIViewController, которая реализует stopAnimatingFooter, и установить для нее значение yes: working = YES;, если она еще не установлена, и установить для нее значение no: working = NO;, когда Вы хотите загрузить новые клетки. Когда вы введете метод stopAnimatingFooter, проверьте, не установлена ​​ли эта переменная if (working) return;.

Не забудьте установить в вашем init методе working = NO;

- (void) stopAnimatingFooter
{
    if (working) return;
    working = YES;
    //add the data
    [[self footerActivityIndicatorView] stopAnimating];
    [self addItemsToEndOfTableView];
    [[self tableView] reloadData];
    working = NO;
}
...