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()
}
}
일반 UIView에는 'refreshControl' 속성이 없으므로 오류가 발생합니다. 이 오류가 발생한 코드에서 무슨 일이 일어나고 있습니까? (즉, 어떻게 하위 클래스를 사용하고 있습니까?) –
안녕하세요 필립, 나는 관련된 추가 코드를 통해 질문을 편집했습니다. 앱이 충돌하면 AppDelegate가 표시됩니다. 입력 한 코드 줄을 표시하지 않습니다. 고맙습니다. – sc13
이'tableView.refreshControl = refreshControl'을 할 때'tableView'가 실제로 디버거에서 인쇄하거나 검사하여 무엇인지 확인할 수 있습니까? 그것이 테이블 뷰 컨트롤러라면, 그것의'view' 속성 또한 무엇인지 확인하십시오. –