Pulltorefresh只能工作一次而不是多次

时间:2016-05-11 14:23:45

标签: ios objective-c uitableview pull-to-refresh uirefreshcontrol

我有一个原型单元的tableview。

我的viewDidLoad方法中有以下代码,

_refreshControl = [[UIRefreshControl alloc]init];

[_refreshControl addTarget:self action:@selector(refreshData) forControlEvents:UIControlEventValueChanged];
UITableViewController *tableViewController = [[UITableViewController alloc] init];
tableViewController.tableView = _tblView;
tableViewController.refreshControl = _refreshControl;

以下是我的refreshData方法....

 -(void)refreshData
{
    [_request getApproveStatutoryMapping];
    UITableViewController *tableViewController = [[UITableViewController alloc] init];
tableViewController.tableView = _tblView;
[_tblView reloadData];

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM d, h:mm a"];
NSString *title = [NSString stringWithFormat:@"Last update: %@", [formatter stringFromDate:[NSDate date]]];
NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObject:[UIColor whiteColor]
                                                            forKey:NSForegroundColorAttributeName];
NSAttributedString *attributedTitle = [[NSAttributedString alloc] initWithString:title attributes:attrsDictionary];
tableViewController.refreshControl.attributedTitle = attributedTitle;

[tableViewController.refreshControl endRefreshing];

}

问题在于

  1. attributesTitle不可见
  2. 要刷新的拉力只能运行一次,如果我再拉一次,它就不起作用了。为什么会这样?

2 个答案:

答案 0 :(得分:1)

您将像{UIViewController

的属性一样定义UITableViewController *tableViewController

在方法refreshData中删除行

UITableViewController *tableViewController = [[UITableViewController alloc] init];
tableViewController.tableView = _tblView;

必须在刷新数据后调用方法endRefreshing,而不是在开始刷新数据时调用,或者在不等待更新的情况下看到预加载器不到一秒

下面

NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObject:[UIColor whiteColor]
                                                            forKey:NSForegroundColorAttributeName];

您可以将刷新标题的颜色定义为白色,如果背景为白色,则永远不会看到标题

答案 1 :(得分:0)

我遇到了同样的问题,刷新的拉力只能运行一次。经过多次努力,我得到了一个解决方案,即在将数据加载到tableview之前我们需要停止刷新。

refreshControl.endRefreshing()

我希望它可能会有所帮助。