2012-07-20 76 views
2

Im使用EGOTableViewPullRefresh可以在我的tableView中獲得拉動刷新效果。並且我增加了一個UIBarButtonItem(IBAction)refreshBtnClicke可以調用自定義的方法refreshByClickRegreshBtn:EGORefreshTableHeaderView.h展現EGORefreshTableHeaderView和重裝我tableView有一個按鈕可以觸發EGORefreshTableHeaderView

TableViewController.m

-(IBAction)refreshBtnClicked{ 

    [_refreshHeaderView refreshByClickRegreshBtn:self.tableView]; 

} 

EGORefreshTableHeaderView.h

- (void)refreshByClickRegreshBtn:(UIScrollView *)scrollView{ 

[self setState:EGOOPullRefreshLoading]; 
NSLog(@"scrollView.contentInset.top :%f", scrollView.contentInset.top);// it's always 0 here 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.2]; 
[scrollView setContentInset:UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f)]; 

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

問題:當我的tableView中沒有數據時,在點擊UIBarButtonItem後總會顯示EGORefreshTableHeaderView。但是,一旦下載的數據填滿tableView,即使refreshByClickRegreshBtn:被調用,我再次單擊UIBarButtonItem時也不會出現EGORefreshTableHeaderView。任何幫助表示讚賞:)

回答

1

通過將[scrollView setContentInset:UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f)]替換爲[scrollView setContentOffset:CGPointMake(0, -60)]修復的問題如下。

- (void)refreshByClickRegreshBtn:(UIScrollView *)scrollView{ 

[self setState:EGOOPullRefreshLoading]; 
NSLog(@"scrollView.contentInset.top :%f", scrollView.contentInset.top);// it's always 0 here 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.2]; 
//[scrollView setContentInset:UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f)]; 
[scrollView setContentOffset:CGPointMake(0, -60)]; 

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