Проекты iPhone нуждаются в функции «Подтянись, чтобы обновить» - PullRequest
5 голосов
/ 07 октября 2011

Многие проекты iPhone используют шаблон «Pull-to-Refresh» для загрузки большего количества результатов (обычно это новые данные с сервера.

В моем проекте я хочу сделать прямо противоположное: «подтягивание к обновлению». Я хочу загрузить старые данные с сервера, но мне нужно, чтобы пользователь запросил данные, открывающие UITableView.

Как я могу это сделать? Кто-нибудь может мне помочь?

Ответы [ 3 ]

8 голосов
/ 07 октября 2011

Вот что я использовал:

Прежде всего, у вас есть представление, содержащее сообщение «Подтянуть для обновления», и назначьте его для:

[pullUpView setFrame:CGRectMake(0, [tableView rectForFooterInSection:0].origin.y, [tableView bounds].size.width,pullUpView.frame.height)];

Затем вы устанавливаете два метода делегата, как показано ниже, для отслеживания перетаскивания.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {    
    if (scrollView.isDragging) {
        CGFloat thresholdToRelease = [pullUpView frame].origin.y - [scrollView bounds].size.height;
        CGFloat thresholdToLoad = thresholdToRelease + [pullUpView frame].size.height;

        if (([scrollView contentOffset].y >= thresholdToRelease) && ([scrollView contentOffset].y < thresholdToLoad)) {
            [pullUpView reset];
        } else if ([scrollView contentOffset].y >= thresholdToLoad) {
            [pullUpView indicateThresholdRearched];
        }
    }
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    CGFloat thresholdToAction = [pullUpView frame].origin.y + [pullUpView frame].size.height - [scrollView bounds].size.height;

    if ([scrollView contentOffset].y >= thresholdToAction) {
        if (!performingAction) {

            [pullUpView startLoading];

            [UIView beginAnimations:nil context:NULL];
            [UIView setAnimationDuration:0.5];
            [tableView setContentInset:UIEdgeInsetsMake(0, 0, [pullUpView frame].size.height, 0)];
            [UIView commitAnimations];

            /* do your things here */
            performingAction = YES;
        }
    }
}

В конце верните contentInset tableView, чтобы скрыть pullUpView.

0 голосов
/ 07 октября 2011

Перейти по этой ссылке.Я думаю, вы получите ваш ответ

https://github.com/enormego/EGOTableViewPullRefresh

0 голосов
/ 07 октября 2011

«Подтягивать для обновления» звучит немного странно, особенно если таблица длиннее одного экрана. Но если вы действительно хотите это сделать, загляните в библиотеку с открытым исходным кодом Three20 . Там вы найдете функцию «Выгрузить для обновления» и можете просто адаптировать ее под свои нужды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...