2017-03-02 1 views
0

내 프로젝트는 여전히 Swift 2.3을 사용 중이며 아직 Swift 3으로 마이그레이션되지 않았습니다. 다음 코드로 테이블 뷰를 끌어 올 때 디버깅 영역에서 새로 고친 데이터를 볼 수 있지만 테이블 뷰에는 반영되지 않음을 확인할 수 있습니다. 나는 IOS 9과 IOS 10 둘 다 시도했다.UIRefreshControl이 작동하지 않습니다.

var refreshControl = UIRefreshControl() 

if #available(iOS 10.0, *) { 
    TableView.refreshControl = refreshControl 
} else { 
    TableView.addSubview(refreshControl) 
} 

refreshControl.addTarget(self, action: #selector(self.handleRefresh), forControlEvents: UIControlEvents.ValueChanged) 

func handleRefresh(refreshControl: UIRefreshControl) { 
    refreshControl.beginRefreshing() 

    Search() 
    TableView.reloadData() 

    refreshControl.endRefreshing() 
} 
+0

검색() 함수를 비동기인가 스위프트 3에있을 때,

search { dispatch_async(dispatch_get_main_queue()) { tableView.reloadData() } } 

을 또는 : 그런 다음과 같이 함수를 호출 할 수 있을까? 그렇다면'reloadData()'메소드가 search()를 완료하기 전에 실행 중일 수 있습니다. 만약 비동기식이라면'reloadData()'와'endRefreshing' 호출을 search()로 옮기고 검색이 실제로 실행을 마치면 실행되도록하십시오. –

답변

2

당신이 search() 기능을 완료하고 결과를 반환했습니다 확신 할 수있는 장소로 이동 tableView.reloadData(). 비동기 함수 인 경우 reloadData() 호출시기를 알 수 있도록 완료 핸들러를 추가하십시오. 당신이

DispatchQueue.main.async {...} 
1

주 스레드에서 tableView를 다시로드 해보십시오.

DispatchQueue.main.async { 
self.tableView.reloadData() 
} 
관련 문제