RxSwift'te yeniyim ve UIRefreshControl'ü bir UITableView kullanarak bir hedef oluşturmanın normal yolu yerine nasıl "reaktif olarak" kullanabileceğimi ve beginRefreshing()
ve endRefreshing()
numaralı çağrıları manuel olarak nasıl arayabileceğimi merak ediyordum . getData()
arayıp da Bittiğinde (ferahlatıcı durdurmak için ben refreshControl
bağlamak nasıl,Ağ görüşmesinden sonra bir UIRefreshControl bağlama
class TableViewController: UITableViewController {
var data : [String] = []
let db = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
refreshControl = UIRefreshControl()
//I don't want to use
//refreshControl?.addTarget(self, action: #selector(getData), forControlEvents: .ValueChanged)
//Do something to refreshControl.rx_refreshing?
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
let str = data[indexPath.row]
cell.textLabel?.text = str
return cell
}
//MARK: - Requests
private func getData() {
let myData = MyAPI.getData() //Returns Observable<[String]>
myData
.subscribe({ [weak self] (event) in
switch event {
case .Next(let strings):
self?.data = strings
self?.tableView.reloadData()
break
case .Error(let err):
print(err)
break
case .Completed:
break
}
// self?.refreshControl?.endRefreshing()
})
.addDisposableTo(db)
}
}
MyAPI
bazı dize değerleri için bir istek gönderir: Mesela
Çok teşekkürler! Denediğimde, activityIndicator.asDriver() işlevini 'activityIndicator.asObservable()' olarak değiştirmem gerekiyordu, aksi takdirde "Sürücü Değeri öğesinin bindTo" öğesinin hiçbiri yoktur. Ayrıca, bir denetim olayını programlı olarak refreshControl'e nasıl uygulayabilirim? RefreshControl.beginRefreshing() 'ı denedim, ancak bu işe yaramıyor. –
jacks205
Etkinliği programlı olarak göndermek için ne yapmaya çalışıyorsunuz? "ViewDidLoad" yürütüldüğünde gerçekleştirilecek ilk 'getData()' yi kullanmak isterseniz, .flatMapLatest'den hemen önce .startWith() 'yi kullanarak daha iyi bir şekilde hizmet vermiş olursunuz. '.asObservable()' kullanmak için cevabı güncelledim. – tomahh
Evet, demek istediğim buydu. Bu Rx eşyalarına hala yeni. Yardım için çok teşekkürler! – jacks205