AJ1*_*112 5 objective-c uitableview ios uirefreshcontrol pull-to-refresh
我在使用UITableView的项目中添加了UIRefreshControl的功能.该应用程序通过从Web服务获取条目到tableview来工作.下面是我用来添加UIRefreshControl的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
refreshControl.tintColor = [UIColor grayColor];
refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Updating New Entries"];
[refreshControl addTarget:self action:@selector(pullToRefresh) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
[self pullToRefresh];
}
- (void) pullToRefresh
{
counter = 1;
[self fetchEntriesNew:counter]; // My code for updating table view
[self performSelector:@selector(updateTable) withObject:nil afterDelay:2];
}
- (void)updateTable
{
[self.tableView reloadData];
[self.refreshControl endRefreshing];
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我进行刷新,则会通过添加新条目进行刷新(如果有),并在tableview上显示以下视图:

一切都很好,除非第一次启动或打开应用程序,它没有显示我在上面的图像中显示的视图,虽然它确实刷新了tableview.我希望它每次刷新时都显示刷新控件视图.谁能指出我做错了什么?谢谢!
更新:我添加了[self refreshControl beginRefreshing],UIRefreshControl的微调器视图现在显示,但它高于tableview的第一个条目.任何人都可以指出如何纠正它?
sat*_*tgi 12
这个问题让我困惑了一段时间.我发现4英寸的iOS设备没有这个问题,但3.5英寸的设备却没有.
我试图找出第一次刷新控件beginRefreshing本身和我操作拉动手势之间的差异.这是拉动操作.
我在UIRefreshControl上检查了Apple的文档.它说 The control does not initiate the refresh operation directly. Instead, it sends the UIControlEventValueChanged event when a refresh operation should occur.
所以我想也许我可以添加一些东西来模拟一个拉动手势来触发refreshControl的显示.
[yourScrollView(or tableView) setContentOffset:CGPointMake(0.0f, -60.0f)
animated:YES];
[yourRefreshControl beginRefreshing];
Run Code Online (Sandbox Code Playgroud)
有用!
PS.UIRefreshControl也适用于UIScrollView.[yourScrollView addSubview:yourRefreshControl]只是工作.
| 归档时间: |
|
| 查看次数: |
9779 次 |
| 最近记录: |