ios - UIRefreshControl - 在 iOS 7 中拉动刷新

标签 ios objective-c uitableview

我正在尝试在我的 TableView 中获得 iOS 7 上的拉动刷新功能。在我的 viewDidLoad 中,我有:

refreshControl = [[UIRefreshControl alloc] init];
[self.mytableView setContentOffset:CGPointMake(0, refreshControl.frame.size.height) animated:YES];
[refreshControl beginRefreshing];
[refreshControl addTarget:self action:@selector(refreshTable) forControlEvents:UIControlEventValueChanged];

然后我运行:

-(void)refreshTable {
    [self.mytableView reloadData];
    [refreshControl endRefreshing];
}

在 iOS 6 上,这意味着当你在 table view 上下拉时,它会显示一个圆形箭头,当你拉动时会被拉长,拉得足够远后,它会刷新。现在,我没有看到圆形箭头。我错过了什么?

最佳答案

您不必显式设置框架或启动 UIRefreshControl。如果它是 UITableViewUICollectionView,它本身应该像一个魅力。不过你确实需要阻止它。

你的代码应该是这样的:

- (void)viewDidLoad {
    [super viewDidLoad];
    refreshControl = [[UIRefreshControl alloc]init];
    [refreshControl addTarget:self action:@selector(refreshTable) forControlEvents:UIControlEventValueChanged];

    if (@available(iOS 10.0, *)) {
        self.mytableView.refreshControl = refreshControl;
    } else {
        [self.mytableView addSubview:refreshControl];
    }
}

在您的 refreshTable 函数中,您需要在刷新数据后停止它。以下是它的外观:

- (void)refreshTable {
    //TODO: refresh your data
    [refreshControl endRefreshing];
    [self.mytableView reloadData];
}

请注意,如果您异步刷新数据,则需要将 endRefreshingreloadData 调用移至完成处理程序。

关于ios - UIRefreshControl - 在 iOS 7 中拉动刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22059510/

相关文章:

ios - 我在 iOS 中收到 NSURLConnection 错误 -1100?

ios - 将键盘设置为仅英语文本字段

iphone - 如何以编程方式布局在不同 "modes"之间切换的应用程序?

iphone - 如果应用程序处于后台模式,则不会发送任何请求

ios - 带有单元格指示器的动态 UITableCellView 高度

ios - UIButton 在自定义 UITableViewCell 中没有响应

ios - 快速从数组中删除自定义类型的元素

objective-c - 如何将 Swift 代码导入 Objective-C?

iphone - 如何使表格 View 中的详细描述文本可编辑?

ios - 如何在 AppDelegate 中使用 Parse 正确设置 Facebook iOS SDK?