Ich beobachte UISearchBar.rx.text Attribute, um einige Suchaktionen auszuführen, wenn Benutzer Text eingeben. Aber irgendwann möchte ich auch diese Suche Aktion programmgesteuert auslösen. Zum Beispiel bei der Erstellung der Ansicht wie in diesem Beispiel, wo leider der Text "Suche nach [...]" nicht gedruckt wird.RxSwift - programmgesteuerte Suche in UISearchBar
import UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
@IBOutlet weak var mySearchBar: UISearchBar!
let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
// Trigger search when text changes
mySearchBar.rx.text.subscribe(onNext: { (text)
print("Searching for \(text)...")
// do some search Action
}
.disposed(by: disposeBag)
// Programmatically trigger a search
mySearchBar.text = "Some text to search"
}
}
Das Problem ändert sich mySearchBar.text löst kein neues rx.text-Ereignis aus. Gibt es einen Weg, dies zu tun?
Zum Beispiel, ich weiß dank this post, dass mit einem UITextField, dies mit der UITextField.sendActions (für: .ValueChanged) -Funktion möglich ist. Gibt es einen ähnlichen Weg mit UISearchBar?
Vielen Dank für diesen sympathischen Workaround! – PhilippeC
Kein Problem. Sie sollten auch den Operator '<-> 'von [RxExamples] (https://github.com/ReactiveX/RxSwift/blob/master/RxExample/RxExample/Operators.swift) betrachten. – jefflovejapan