我正试图在我的表视图中获得iOS 7上的pull to refresh功能.在我的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上,这意味着当你在桌面视图上向下拉时,它会显示一个圆形箭头,当你拉的时候它会被拉伸,拉得足够远后,它会刷新.现在,我没有看到圆形箭头.我错过了什么?

推荐答案

您不必显式设置frame或start 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个调用移动到完成处理程序.

Objective-c相关问答推荐

将 NSInteger 转换为 NSIndexpath

UITabBar 中的自定义 colored颜色

UITableView/UITableViewCell 点击事件响应?

如何追踪 SIGABRT 的原因

让 iPhone sleeping

在 NSData 和 base64 字符串之间转换

以原子方式写入文件与不写入文件之间的区别

如何从 Xcode4 生成 UML 图

应用程序内部的Gift App

当服务器上的图像文件更改时,我的应用程序中的 SDWebImage 缓存图像会发生什么情况?

UIFont 的磅值到底是多少?

self.window.rootViewController 与窗口 addSubview

iOS 上 64 位的 BOOL

UITextField:键盘出现 timeshift 动视图

UITableViewCell 右侧有图像?

获取临时目录中文件的文件路径和 URL

如何调整 UITableView 中原型单元格的左边距?

Xcode中私有方法的单元测试

无法从其 DataSource 获取单元格

Objective C 消息分发机制