2014-02-17 49 views
4

我想實施拉到刷新到我的UITableViewController通過使用UIRefreshControl。在這裏,我到目前爲止嘗試過。UIRefreshControl不顯示指示符或標題?

- (void)viewDidLoad 
    { 
    ..... 
    ////********* Pull to refresh ************/ 
     UIRefreshControl *refresh = [[UIRefreshControl alloc] init]; 
     refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to Refresh"]; 
     refresh.tintColor = [UIColor magentaColor]; 
    // [self.tableView addSubview:refresh]; 
// [self.refreshControl setEnabled:YES]; 
     [refresh addTarget:self action:@selector(pullToRefresh:) forControlEvents:UIControlEventValueChanged]; 
     self.refreshControl = refresh; 

    } 
    -(void)pullToRefresh:(UIRefreshControl *)refresh { 
     [refresh beginRefreshing]; 
     refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"Refreshing.."]; 
     [self loadRecentActivities]; 
    } 

但是,當我拉tableview中既不活動的指標也不標題是可見的,但是pullToRefresh被調用,表refreshed.My應用程序支持iOS7.0 +。 我失蹤了什麼?任何幫助,將不勝感激?

編輯:我心中已經試圖與[self.refreshControl setEnabled:YES];和我編輯的代碼中提到[self.refreshControl setEnabled:YES];,但仍沒有運氣。 這是我的tableview看起來如何,當我把它喜歡茶點enter image description here

最終解決方案:對於表視圖背景我用

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]]; 
self.tableView.backgroundView = imageView; 

刷新指示符和標題是隱藏在背後self.tableView.backgroundView改用

[self.tableView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]]; 

它解決了我的問題。也非常感謝Balram Tiwari如果你仍然有問題,請看他的答案。

+0

UITableViewController已經有了一個refreshControl,你不需要再添加一個。 – Pawan

+0

該行在我的代碼中有所評論,並沒有任何區別。 – Bharat

+0

調用[refresh beginRefreshing]。在pullToRefresh多數民衆贊成在所有。當你的任務完成時[refresh endRefreshing]; – Pawan

回答

7

其實你在tableView有你的刷新控制器,但它在navigationBar後面。 (聽起來不同,右),

當您在iOS7中使用代碼時,默認情況下,UIViewController需要(edgesForExtendedLayout)整個屏幕。這意味着您的(0,0)將從左上角開始,位於navigationBar下方。

所以你的tableView實際上是從那裏開始的。所以爲了擺脫它,您只需在viewDidLoad方法中爲您的viewController指定edgesForExtendedLayout

if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) 
    self.edgesForExtendedLayout = UIRectEdgeNone; 

之後,它應該是可見的。

  • 上述修正前:

Before Fix

  • 修復後。

After the Fix

希望幫助。

+0

也只是取消註釋此行。 '[self.tableView addSubview:refresh];' –

+0

它不適用於我..我認爲它不是由於edgesForExtendedLayout,你可以看到有空間(標記爲紅色的矩形),當我的桌面刷新。 – Bharat

+0

僅供參考我已經在self.navigationController.view上添加了一個子視圖(請參閱屏幕截圖中的Call/Talk Activity),我嘗試刪除它,但在任何情況下刷新指示都不會出現。 – Bharat

11

只需在refreshControl的初始化代碼下添加self.tableView.backgroundView.layer.zPosition -= 1;即可。

+1

此解決方案正常工作。我的背景圖像隱藏了'UIRefreshControl'在我的情況下... –