4

コードから強制的EGORefreshTableHeaderViewに更新しようとしています。プルダウンすると、すべてが完璧に機能し、TableView(ルート)が更新されます。しかし、私はユーザーが特定のエンティティにサブスクライブできるモーダルビューを持っています。彼が1つをサブスクライブすると、最初の(ルート)テーブルビューのreloadメソッドがトリガーされます。このメソッドは、サーバーへの接続を確立し、サブスクリプションに基づいて特定のデータをロードし、それをに格納して(ルート)CoreData DBを更新します。TableView

問題は、ユーザーが3GまたはEdgeネットワークにのみ接続している場合、独自のスレッドで処理されるダウンロードに数秒かかる可能性があることです。何かが起こったことをユーザーに示すために、を表示したいと思いEGORefreshTableHeaderViewます。

更新ビューのインデントを設定し、読み込みアイコンを手動で表示できることがわかりましたが、デリゲートまたはメソッドをトリガーするだけで簡単な解決策はないかと思いましたEGORefreshTableHeaderView

4

2 に答える 2

9

使ってみましたegoRefreshScrollViewDataSourceStartManualLoadingか?

インスタンスの名前が_refreshTableHeaderViewEGORefreshTableHeaderViewであるとすると、次のような呼び出しが行われます。

[_refreshTableHeaderView egoRefreshScrollViewDataSourceStartManualLoading:self.tableView];

私のために働く...


だから、これを使ってから時間が経ち、自分で変更を適用したのを忘れてしまいました...

この追加のプロトコルを追加するために変更EGORefreshTableHeaderDelegate(で宣言)しました:EGORefreshTableHeaderView.h

- (void)egoRefreshScrollViewDataSourceStartManualLoading:(UIScrollView *)scrollView;

そして実装(でEGORefreshTableHeaderView.m):

- (void)egoRefreshScrollViewDataSourceStartManualLoading:(UIScrollView *)scrollView {
    [self setState:EGOOPullRefreshLoading];

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.2];
    scrollView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f);
    [UIView commitAnimations];

    if ([_delegate respondsToSelector:@selector(egoRefreshTableHeaderDidTriggerRefresh:)]) {
        [_delegate egoRefreshTableHeaderDidTriggerRefresh:self];
    }
}

さらにサポートが必要な場合はお知らせください。

(そして、素晴らしい仕事をしてくれてありがとうenormego!)

于 2012-05-17T11:03:03.943 に答える
1

Reuvenと彼のコードのおかげで、画面よりも大きいUIScrollViewでも使用できるように少し改善しました。さらに、非推奨のcommitAnimationsアニメーションをブロックするように変更しました。

#pragma mark - Manually refresh view update
- (void)egoRefreshScrollViewDataSourceStartManualLoading:(UIScrollView *)scrollView {
    [self.refreshHeaderView setState:EGOOPullRefreshLoading];

    //animating pull down scroll view
    [UIView animateWithDuration:0.2
                     animations:^{ 
                         scrollView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f); 
                         scrollView.contentOffset = CGPointMake(0, -60.0f);
                     }
     ];

    //triggering refreshview regular refresh
    if ([self.tableView.delegate respondsToSelector:@selector(egoRefreshTableHeaderDidTriggerRefresh:)]) {
        [self egoRefreshTableHeaderDidTriggerRefresh:self.refreshHeaderView];
    }
}
于 2012-05-18T08:42:34.503 に答える