2016-09-14 32 views
16

我使用其中有一個UITableView下拉刷新功能,但對於微調下拉刷新沒有顯示出來,當我打電話[self.refreshControl beginRefreshing]iOS的10.0 UIRefreshControl沒有顯示指標

以上代碼在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

嗨。你好嗎?你找到解決方案嗎?謝謝。問候。 – delarcomarta

+0

啓用UITableView彈跳屬性 – Rivendell

回答

21

代碼之前:

[refreshControl beginRefresh]

插入代碼:

[refreshControl layoutIfNeeded]

+0

這已經解決了我的問題。謝謝你的幫助。 – dogwasstar

1

這是iOS的10已知和報告的bug

Radar rdar://27468436

我不知道是否有任何變通辦法。

+0

真棒感謝您的快速回復 – dogwasstar

+0

看到他們沒有解決它在通用汽車,是否有可能,有變化,我們需要做不同的事情? – skinsfan00atg

+0

10.1測試版,任何人都沒有檢查? – skinsfan00atg

3

您需要撥打[self.view layoutIfNeeded]才能在iOS 10中修復它。對於我的情況,撥打viewDidLoad(我在該項目中使用故事板)就足夠了。對於其他情況viewWillAppear更合適。

- (void)viewDidLoad 
    { 
    [super viewDidLoad]; 
    [self.view layoutIfNeeded]; 
    ... 
+0

當downvoting時,請解釋原因。否則它是毫無意義的 – Thorax

+2

這對我初始化我的tableView後適用。例如,在'viewWillAppear'上調用'self.view.layoutIfNeeded'。我正在使用swift。 – pableiros

+1

這爲我工作!謝謝!!我不得不把它放在viewwillappear中,而不是viewdidload。 – skinsfan00atg

2

延遲呼叫viewDidLoad中刷新爲我工作:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
     [self.refreshControl beginRefreshing]; 
}); 
0

我只能通過調用來解決這個問題,從viewDidLoad中():

refreshControl.layoutIfNeeded() 
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]; 
1

同@jpros回答,但在迅疾

if #available(iOS 10.0, *) { 
    tableView.refreshControl = refreshControl 
} else { 
    tableView.addSubview(refreshControl) 
} 
refreshControl.layoutIfNeeded() 
refreshControl.beginRefreshing() 
相關問題