2017-12-15 22 views
0

여러 VC에서 맞춤 새로 고침 컨트롤을 사용하는 앱. 그러나 그 중 하나만 작동하지 않고 대상 오류가 발생합니다.인식 할 수없는 셀렉터가 인스턴스로 전송 됨 [UIView setRefreshControl :]

사용자 정의 UIRefreshControl는 :

나는 다른 벤처 캐피탈의 코드를 확인
class CustRefreshCont: UIRefreshControl { 

    override init() { 
     super.init() 

     let noColor = UIColor.clear 
     let lightGrayColor = UIColor.lightGray 
     self.tintColor = lightGrayColor 
     self.backgroundColor = noColor 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 
} 

, 아무것도 다른 것 같다. 어떻게 든 MainStoryboard에서 오류를 해결할 수 있다고 가정합니다 (예 : UIView의 Inspector에서)

감사합니다.

EDIT 다만 추가적인 코드 :

는 Decleration :

let refreshControl = CustRefreshCont() 
refreshControl.addTarget(self, action: #selector(PortfolioVC.refreshData), for: UIControlEvents.valueChanged) 

// if it is iOS 10 and higher run new method 
if #available(iOS 10.0, *) { 
    tableView.refreshControl = refreshControl 
} else { 
    tableView.addSubview(refreshControl) 
} 

기능 :

@objc private func refreshData(){ 
    // Calculate elapsedTime 
    elapsedTime = Date().timeIntervalSince(lastRefresh) 
    convToInt = refreshRestrictSec - NSInteger(elapsedTime) 

    // If last refresh call was older then a minute 
    if NSInteger(elapsedTime) > refreshRestrictSec { 

     // Displaying text while updating 
     self.refreshControl.attributedTitle = NSAttributedString(string: "Updating data...", attributes: [NSAttributedStringKey.foregroundColor : UIColor.lightGray, NSAttributedStringKey.backgroundColor : UIColor.clear]) 
     print(elapsedTime) 
     view.endEditing(true) 
     selectedCurrencies.removeAll() 

     // Pulling JSON data and updating selected Currencies 
     downloadCurrencies(completion: { (isComp, isErr) in 
      if Currencies.count > 0 { 
       syncValuesAtStored(cur: selectedCurrencies) 
       DispatchQueue.main.async { 
        calculateTotalWorth() 
        excludeNonePosses() 
        self.refreshControl.endRefreshing() 
        animateTableView(tableView: self.tableView) 
        self.collectionView.reloadData() 
        lastRefresh = Date() 
       } 
      } else { 
       print("Error on Refresh") 
      } 
     }) 

    } else { 
     print(elapsedTime) 
     self.refreshControl.attributedTitle = NSAttributedString(string: "You can refresh \(convToInt) seconds later!", attributes: [NSAttributedStringKey.foregroundColor : UIColor.lightGray, NSAttributedStringKey.backgroundColor : UIColor.clear]) 
     self.refreshControl.endRefreshing() 
    } 
} 
+0

일반 UIView에는 'refreshControl' 속성이 없으므로 오류가 발생합니다. 이 오류가 발생한 코드에서 무슨 일이 일어나고 있습니까? (즉, 어떻게 하위 클래스를 사용하고 있습니까?) –

+0

안녕하세요 필립, 나는 관련된 추가 코드를 통해 질문을 편집했습니다. 앱이 충돌하면 AppDelegate가 표시됩니다. 입력 한 코드 줄을 표시하지 않습니다. 고맙습니다. – sc13

+0

이'tableView.refreshControl = refreshControl'을 할 때'tableView'가 실제로 디버거에서 인쇄하거나 검사하여 무엇인지 확인할 수 있습니까? 그것이 테이블 뷰 컨트롤러라면, 그것의'view' 속성 또한 무엇인지 확인하십시오. –

답변

0

MainStoryboard에 삭제 및 관련 VC (PortfolioVC)에서있는 tableView의 출구를 재 연결 후 고정 오류. 따라서 이것은 xCode의 버그 여야합니다.