Похоже, что вы хотите сделать, это переключить видимость всплывающего окна в зависимости от нажатия кнопки. Если это так, то вам нужно поддерживать состояние, а это означает использование оператора .scan
.
func shouldShowInfoPopup(infoIconTapped: Driver<Void>) -> Driver<Bool> {
return infoIconTapped
.scan(false) { current, _ in !current }
.startWith(false)
}
Выше было бы свободной функцией (не в любом классе или структуре) и может использоваться следующим образом:
let showInfo = shouldShowInfoPopup(infoIconTapped: infoIconTapped)
Если вы должны поставить функцию в классе или структуре, затем поместите ее в расширение для самого драйвера, как это:
extension SharedSequence where SharingStrategy == DriverSharingStrategy {
var shouldShowInfoPopup: Driver<Bool> {
scan(false) { current, _ in !current }
.startWith(false)
}
}
Что можно использовать следующим образом:
let shouldShowInfoPopup = infoIconTapped.shouldShowInfoPopup