我正在使用一个UITableView,它具有一个下拉刷新功能,但当我调用[self.refreshControl beginRefreshing]
时,下拉刷新的微调器没有显示出来在viewDidLoad中调用上面的代码导致表最初加载一些数据。如果我在初始刷新后执行下拉刷新,则微调器工作正常。标题显示但不是旋转器。
似乎无法解决这个问题。它适用于iOS 9.3.2,但不适用于iOS 10。
这是我目前使用的代码。
- (void)viewDidLoad
{
[super viewDidLoad];
[self setupView];
[self customSetup];
self.refreshControl = [[UIRefreshControl alloc] init];
self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Updating Discounts..."];
[self.refreshControl addTarget:self action:@selector(reloadDeals) forControlEvents:UIControlEventValueChanged];
[self.refreshControl beginRefreshing];
[self.tableView setContentOffset:CGPointMake(0, -self.refreshControl.frame.size.height) animated:YES];
}
感谢您的提前帮助
答案 0 :(得分:22)
:
[refreshControl beginRefresh]
插入代码:
[refreshControl layoutIfNeeded]
答案 1 :(得分:3)
在viewDidLoad中延迟调用刷新对我有用:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.refreshControl beginRefreshing];
});
答案 2 :(得分:2)
你需要在iOS 10中调用[self.view layoutIfNeeded]
来修复它。对于我的情况,将调用放到viewDidLoad
就足够了(我在该项目中使用了故事板)。对于其他情况,viewWillAppear
更适合。
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view layoutIfNeeded];
...
答案 3 :(得分:1)
答案 4 :(得分:1)
与@jpros相同,但在swift中
Observable<Example>
答案 5 :(得分:0)
我只能通过从viewDidLoad()调用来解决这个问题:
refreshControl.layoutIfNeeded()
答案 6 :(得分:0)
在iOS10中,我们应该使用UITableView或UICollectionView的setRefreshControl添加UIRefreshControl。
if([self.tableView respondsToSelector:@selector(setRefreshControl:)]) {
[self.tableView setRefreshControl:self.refreshControl];
}
else {
[self.tableView addSubview:self.refreshControl];
}
[self.refreshControl layoutIfNeeded];
[self.refreshControl beginRefreshing];
答案 7 :(得分:0)
如果刷新指示器未显示,请尝试在Interface Builder中为表视图或滚动视图启用“垂直反弹”。