UIRefreshControl没有显示指标或标题?

Bha*_*rat 4 objective-c uitabbarcontroller ios pull-to-refresh ios7

我想实现拉来刷新我的UITableViewController使用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];
    }
Run Code Online (Sandbox Code Playgroud)

但是当我拉出tableview时,活动指示器和标题都不可见,但是pullToRefresh会调用并刷新表.我的应用程序支持iOS7.0 +.我错过了什么?任何帮助,将不胜感激?

编辑:我试过 [self.refreshControl setEnabled:YES];[self.refreshControl setEnabled:YES];编辑过的代码一样,但仍然没有运气.当我把它拉到刷新时,这就是我的tableview的样子 - 在此输入图像描述

最终解决方案:对于我正在使用的表视图背景

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]];
self.tableView.backgroundView = imageView;
Run Code Online (Sandbox Code Playgroud)

刷新指示符和标题隐藏在self.tableView.backgroundView替代使用后面

[self.tableView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];
Run Code Online (Sandbox Code Playgroud)

它解决了我的问题.还有很多感谢Balram Tiwari如果你还有问题,请看他的回答.

Sla*_*cho 11

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


Bal*_*ari 7

实际上你在tableView中有刷新控制器,但它在navigationBar后面.(听起来不一样,对,)这是捕获,

在iOS7中使用代码时,默认情况下UIViewController采用(edgesForExtendedLayout)整个屏幕.这意味着你的(0,0)将从导航栏下方的左上角开始.

所以你的tableView实际上是从那里开始的.因此,要摆脱它,你只需指定edgesForExtendedLayoutviewController在你的viewDidLoad方法.

if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
    self.edgesForExtendedLayout = UIRectEdgeNone;
Run Code Online (Sandbox Code Playgroud)

之后它应该是可见的.

  • 在上面修复之前:

修复之前

  • 修复后.

修复后

希望有所帮助.