2013-07-05 40 views
0

我有一個關於EGORefreshTableHeaderView的使用問題:的iOS的UITableView的headerView不是隱藏

如果我用這個代碼,它是好的:

- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView *)view 
{ 
    _reloading = YES; 
    [self performSelector:@selector(refreshData) withObject:nil afterDelay:0.1f]; 
} 

- (void)refreshData 
{ 
    _reloading = NO; 
    [self.dataSourceArr removeAllObjects]; 
    [self.dataSourceArr addNewData]; 
    [self.egoHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.mainTableView]; 
    [self.mainTableView reloadData]; 
} 

然而,當我使用此代碼,該EGOrefreshHeaderView將在mainTableView頂部顯示,一直以來,它並不能掩蓋:

- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView *)view 
{ 
    _reloading = YES; 
    [self refreshData]; 
} 
- (void)refreshData 
{ 
    _reloading = NO; 
    [self.dataSourceArr removeAllObjects]; 
    [self.dataSourceArr addNewData]; 
    [self.egoHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.mainTableView]; 
    [self.mainTableView reloadData]; 
} 
+0

你能格式化你的代碼嗎?沒有什麼可讀的。 –

+0

對不起,現在沒關係 – Harry

+0

如果它是零,請檢查'self.egoHeaderView'或'self.mainTableView'。如果他們是'IBOutlet',那麼檢查它們是否正確連接到xib。 –

回答

1

C的最高位ODE運行是這樣的:

// someone calls egoRefreshTableHeaderDidTriggerRefresh 
    [_delegate egoRefreshTableHeaderDidTriggerRefresh:self] 
     // sets up a refreshData to run after set period of time 
    scrollView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f); // a 
// some time later, refreshData runs 
    [self.egoHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.mainTableView]; 
     [scrollView setContentInset:UIEdgeInsetsMake(0.0f, 0.0f, 0.0f, 0.0f)]; // b 

底位運行是這樣的:

// someone calls egoRefreshTableHeaderDidTriggerRefresh 
    [_delegate egoRefreshTableHeaderDidTriggerRefresh:self] 
     [self refreshData]; 
      [self.egoHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.mainTableView]; 
       [scrollView setContentInset:UIEdgeInsetsMake(0.0f, 0.0f, 0.0f, 0.0f)]; // b 
    scrollView.contentInset = UIEdgeInsetsMake(60.0f, 0.0f, 0.0f, 0.0f); // a 

ab是相反的。即使更改是動畫,第二行覆蓋第一行。

修復1:

修改文件EGORefreshTableHeaderView.h

變化- (void)egoRefreshTableHeaderDidTriggerRefresh:...- (bool)egoRefreshTableHeaderDidTriggerRefresh:...

修改文件EGORefreshTableHeaderView.m

變化- (void)egoRefreshScrollViewDidEndDragging:

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

最後更改egoRefreshTableHeaderDidTriggerRefresh:

- (bool)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView *)view 
{ 
    _reloading = YES; 
    [self refreshData]; 
    return true; 
} 

修復2:

如果你不想改變第三方代碼,頂級版是唯一的出路。您可以指定持續時間爲0,並且應該讓選擇器排隊以後運行。

+0

非常感謝!對我來說太有幫助了 – Harry