2016-11-21 1 views

답변

4

, 첫번째 파라미터 : 예외가 -

public func refresh(sender: AnyObject) { 
     updateData() 
     refreshControl.endRefreshing() 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     [...] 

     refreshControl.addTarget(self, action: Selector(("refresh:")), for: UIControlEvents.valueChanged) 
    } 

I 당겨 : I는 UIRefreshControl 타겟으로서 여기 아래에 설정하고, 내부 UITableViewUIViewController 사용하고 더 이상 기본적으로 무시되지 않습니다. 스위프트 2에서 새로 고침 방법 서명이 refresh(_:)이고 이제는 refresh(sender:)이므로 Selector("refresh:")이 작동하지 않습니다.

첫 번째 매개 변수에 밑줄을 추가하여 func refresh(_ sender: AnyObject)처럼 보이게하는 것이 좋습니다.

나는 또한 당신이 좋아 보일 것이다 새로운 선택기 구문을 사용하는 것이 제안이 #selector(refresh(_:))

당신이 (당신이해야) 새로운 선택기 구문 난 당신이 또한 첫 번째 인수를 유지할 수 있다고 생각하고 있습니다를 사용하는 경우 이 모양처럼 #selector(refresh(sender:))

5

튜토리얼 몇 읽기.

iOS10 UIRefreshControl에서 TableViews에 추가되었습니다. 내 homeproject에 사용

간단한 코드 :

private let refreshControl = UIRefreshControl() 

    override func viewDidLoad() { 

     tableView.refreshControl = refreshControl 
     refreshControl.addTarget(self, action: #selector(ViewController.refreshData(sender:)), for: .valueChanged) 

     fetchFixtures() 

    } 

    func refreshData(sender: UIRefreshControl) { 
     fetchFixtures() 

     refreshControl.endRefreshing() 
    } 
+0

퍼펙! 정말 고맙습니다! – Jignesh

+0

@odvan은 내가 당신의 모범을 보게 될 때까지 이걸 두 시간이나 보냈습니다. 감사@ –

관련 문제