2017-10-19 2 views
0

UIRefreshControl을 구현하는 UITableViewController를 사용하여 서버의 데이터를 새로 고칩니다. 디버그에서 새로 고침 메서드가 호출되고 새로운 올바른 데이터가 다운로드되지만 UITableViewController는이를 반영하지 않습니다.UIRefreshControl을 사용할 때 UITableViewController가 새로 고쳐지지 않는 이유는 무엇입니까?

내가있는 UITableViewController를 닫고 다시 올바른 데이터가 내 새로 고침 코드는 당신이 새로운 데이터를 일단 테이블보기를 다시로드에 대한 책임이

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIRefreshControl *refresh = [[UIRefreshControl alloc] init]; 

    refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to Refresh"]; 

    [refresh addTarget:self action:@selector(updateData) 

    forControlEvents:UIControlEventValueChanged]; 

    self.refreshControl = refresh; 
} 

- (void) updateData { 

    [ShopifyWebServices fetchAllProductsInCollection:shopifyCollectionTitle]; 

    [self performSelector:@selector(stopRefresh) withObject:nil afterDelay:5]; 
} 

- (void)stopRefresh { 

    [self.refreshControl endRefreshing]; 

} 
+0

가있는 tableview의 데이터를 관리하기 위해, 당신은 내가이 시도하지만 난에서 다시 이동하지 않는 한 여전히 새로 고침하지 않습니다 테이블보기 –

답변

2

과 같은

표시됩니다 엽니합니다. 새로 고침 제어 기능은 트리거되었음을 알리는 것 외에는 아무 것도하지 않습니다.

fetchAllProductsInCollection 다음에 일종의 대리자 메서드 또는 완료 블록이 있어야하는데 그 곳에서 endRefreshing을 호출하고 테이블 데이터를 다시로드해야합니다.

+0

의 reloadData 기능을 사용해야합니다 - (무효) 때문에 updateData { [ShopifyWebServices fetchAllProductsInCollection : shopifyCollectionTitle] [self performSelector : @selector (stopRefresh) withObject : nil afterDelay : 5]; [self.tableView reloadData]; } –

+0

데이터 소스 등을 연결하지 못했을 수 있습니까? –

+0

그 코드는 데이터를 즉시 다시로드합니다. '[self.tableView reloadData];를'stopRefresh' 메쏘드에 넣으면 작동 할 수도 있지만, 반입이 끝났을 때 실제로 5 초를 기다리는 중이다. 데이터 소스에 연결하지 않았다면 작동하지 않을 것입니다. – jrturton

관련 문제