You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'd like to reload one specific card after I get the data update from an async restful process. However, loadSpecificCards function is not available under the CardPartsViewController. I am wondering what's the correct method to achieve that. Also, I am wondering what the "indexPath" in the function is. Is it possible for someone to give an example? Thank you very much!
import Foundation
import CardParts
import RxSwift
class CardRecommendationController: CardPartsViewController {
private var diseaseClient: DiseaseClient?
private var progressManager: ProgressManager?
private var currentPage = 0
private var timer: Timer?
let cardPartTextView = CardPartTextView(type: .normal)
var recommendations = BehaviorSubject(value: ["1", "2"])
var recommendationImages: [UIImage?] = [UIImage(systemName: "heart"), UIImage(systemName: "lungs")]
let imageRecommendation = CardPartImageView()
override func viewDidLoad() {
super.viewDidLoad()
self.progressManager = ProgressManager()
self.diseaseClient = DiseaseClient()
cardPartTextView.text = "Top Health Threats in the Country"
cardPartTextView.font = UIFont.systemFont(ofSize: 18)
cardPartTextView.textColor = .darkGray
self.diseaseClient?.getDiseaseData(country: "US"){[unowned self] (diseaseData, error) in
if error != nil {
self.progressManager?.stopLoading()
return
}
if let diseaseData = diseaseData {
let viewModel3 = DiseaseViewModel(model: diseaseData)
viewModel3.cause.asObservable().bind(to: recommendations).disposed(by: bag)
var stackViews: [CardPartStackView] = []
do {
for (index, recommedationString) in try recommendations.value().enumerated() {
let sv = CardPartStackView()
sv.axis = .vertical
sv.spacing = 8
stackViews.append(sv)
let strs = recommedationString.components(separatedBy: "|")
let image = CardPartImageView()
image.image = recommendationImages[index]
image.contentMode = .scaleAspectFit
image.tintColor = .lightGray
sv.addArrangedSubview(image)
let recom1 = CardPartTextView(type: .normal)
recom1.text = String(index * 5 + 1) + ". " + strs[0]
recom1.textAlignment = .center
sv.addArrangedSubview(recom1)
let recom2 = CardPartTextView(type: .normal)
recom2.text = String(index * 5 + 2) + ". " + strs[1]
recom2.textAlignment = .center
sv.addArrangedSubview(recom2)
let recom3 = CardPartTextView(type: .normal)
recom3.text = String(index * 5 + 3) + ". " + strs[2]
recom3.textAlignment = .center
sv.addArrangedSubview(recom3)
let recom4 = CardPartTextView(type: .normal)
recom4.text = String(index * 5 + 4) + ". " + strs[3]
recom4.textAlignment = .center
sv.addArrangedSubview(recom4)
let recom5 = CardPartTextView(type: .normal)
recom5.text = String(index * 5 + 5) + ". " + strs[4]
recom5.textAlignment = .center
sv.addArrangedSubview(recom5)
}
} catch {
}
let cardPartPagedView = CardPartPagedView(withPages: stackViews, andHeight: 200)
// To animate through the pages
timer = Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block: {[weak self] (_) in
guard let this = self else { return }
do {
let recomSize = try this.recommendations.value().count
this.currentPage = this.currentPage == recomSize - 1 ? 0 : this.currentPage + 1
} catch{
}
cardPartPagedView.moveToPage(this.currentPage)
})
setupCardParts([cardPartTextView, cardPartPagedView])
// I want to call loadSpecificCards(cards: <#T##[CardController]#>, indexPaths: <#T##[IndexPath]#>) method here
// but it is not available for CardPartsViewController. What should be the best practice?
self.progressManager?.stopLoading()
}
}
}
}
The text was updated successfully, but these errors were encountered:
I'd like to reload one specific card after I get the data update from an async restful process. However, loadSpecificCards function is not available under the CardPartsViewController. I am wondering what's the correct method to achieve that. Also, I am wondering what the "indexPath" in the function is. Is it possible for someone to give an example? Thank you very much!
The text was updated successfully, but these errors were encountered: