标签: rx-cocoa

使用RxSwift观察UITextField.editing

我想观察房产UITextfield.editing.我正在使用此代码:

self.money.rx_observe(Bool.self, "editing").subscribeNext { (value) in
    print("")
}.addDisposableTo(disposeBag)
Run Code Online (Sandbox Code Playgroud)

但是在运行过程中,它只执行一次.请问我该如何解决这个问题

ios swift rx-swift reactivex rx-cocoa

17
推荐指数
2
解决办法
2万
查看次数

RxSwift:如何向UILabel添加手势?

我有一个labelisUserInteractionEnabled设置为true.现在,我需要添加UITapGestureRecognizer标签.有没有办法添加Rx方式.

我在这里查看了RxSwift库.他们没有为添加手势提供任何扩展.该UILabel+Rx文件只有textattributedText.

是否有任何解决方法可以添加手势到标签?

ios swift rx-swift rx-cocoa

15
推荐指数
3
解决办法
1万
查看次数

flatMap不返回onCompleted

我创建了下面的函数与多个observable的链接,但无论我做什么它似乎没有调用completed?它只返回以下内容:

(facebookSignInAndFetchData()) -> subscribed
(facebookSignInAndFetchData()) -> Event next(())
Run Code Online (Sandbox Code Playgroud)

即使我debug单独观察他们都会回归completed

这是我的链接功能

func facebookSignInAndFetchData() {


    observerFacebook.flatMap { (provider: FacebookProvider) in
        return provider.login()
        }.flatMap { token in
            return self.loginViewModel.rx_authenticate(token: token)
        }.flatMap {
            return self.loginViewModel.fetchProfileData()
        }.debug().subscribe(onError: { error in

            //Guard unknown ErrorType
            guard let err = error as? AuthError else {
                //Unknown error message
                self.alertHelper.presentAlert(L10n.unknown)
                return
            }

            //error message handling
            switch err {
            case .notLoggedIn:
                print("not logged in")
                break
            default:
                self.alertHelper.presentAlert(err.description)
            }

        }, onCompleted: {
            self.goToInitialController()
        }).addDisposableTo(self.disposeBag)

}
Run Code Online (Sandbox Code Playgroud)

rx_authenticate …

swift rx-swift rx-cocoa

13
推荐指数
1
解决办法
1042
查看次数

RxSwift/RxCocoa:防止UITextField具有多个......字符

我想有一个UITextField配置RxSwift/RxCocoa,以便它只包含...字符.我不想使用UITextFieldDelegate这个,但很想用RxSwift/RxCocoa实现这一点.有没有办法做到这一点?

swift rx-swift rx-cocoa

11
推荐指数
1
解决办法
3723
查看次数

RxSwift在select上修改tableview单元格

我的应用程序中有一个表格视图.我使用以下代码为此表生成了数据源

struct ContactNameNumberBlockStatus {
    var contactThumbnail: Data?
    var contactName : String
    var contactNumber: String
    var blockStatus : Bool
}

class BlockListTableViewCell: UITableViewCell {
    @IBOutlet weak var contactImage: UIImageView!
    @IBOutlet weak var contactName: UILabel!
    @IBOutlet weak var contactNumber: UILabel!
    @IBOutlet weak var blockButton: UIButton!
    var eachCell : ContactNameNumberBlockStatus! {
        didSet {
            // setting ui
        }
    }
}

private func showTableContent(data :   Observable<[ContactNameNumberBlockStatus]>) {
        data.bindTo(tableView.rx.items(
            cellIdentifier: "BlockListTableViewCell")) {
            row, contributor, cell in
            if let cell2 = cell as? BlockListTableViewCell {
                cell2.eachCell = …
Run Code Online (Sandbox Code Playgroud)

ios rx-swift rx-cocoa

9
推荐指数
1
解决办法
1万
查看次数

在UICollectionViewCell中为UIButton设置rx.tap的问题 - RxSwift 3

我为1 UIButton订阅了2次:

  1. 首次订阅,用于在每次点击时更新UI
  2. 第二次订阅,用于在累积点击后每1秒更新一次Web服务上的值.

码:

class ProductionSize {
    var id : Int?
    var size: Int = 0
    var name: String = ""
}

class ProductionCell: UICollectionViewCell {
    var rxBag = DisposeBag()


    // this will be set in the (cellForItemAt indexPath: IndexPath) of collection view
    var productionSize: ProductionSize? {
        didSet {
            showProductionSize()
            prepareButton()
        }
    }

    func showProductionSize() {
        // ... code for showing ProductionSize in labels
    }

    func prepareButton() {
        // This for subscribing for every click for displaying purpose

        btn_increase.rx.tap …
Run Code Online (Sandbox Code Playgroud)

reactive-programming ios rx-swift swift3 rx-cocoa

8
推荐指数
2
解决办法
1万
查看次数

`.drive()` 和 `.bind(to:)` 之间的区别

我目前正在学习 RxSwift。

你什么时候用.drive(something),什么时候用.bind(to: something)

例子:

let disposeBag = DisposeBag()
let isEnabled = BehaviorRelay(value: true)
let button = UIButton()
// what is the benefit of this:
isEnabled.asDriver().drive(button.rx.isEnabled).disposed(by: disposeBag)
// over this:
isEnabled.bind(to: button.rx.isEnabled).disposed(by: disposeBag)
// or is the above better?
Run Code Online (Sandbox Code Playgroud)

使用 RxSwift、驱动程序和绑定到的答案并没有真正的帮助。我不明白为什么添加asDriver()甚至有必要使它成为一个不会失败的东西。

ios swift rx-swift rx-cocoa

8
推荐指数
1
解决办法
1561
查看次数

如何通过被动(RxSwift)调用替换UICollectionViewDelegateFlowLayout?

有没有办法替换方法

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
Run Code Online (Sandbox Code Playgroud)

UICollectionViewDelegateFlowLayout协议使用RxSwift反应的东西?

swift rx-swift rx-cocoa

7
推荐指数
1
解决办法
604
查看次数

RxSwift基于变量构建一个Observable

我正在尝试构建一个Observable,它将根据Variable的值输出一个值.

像这样的东西:

let fullName = Variable<String>("")
let isFullNameOKObs: Observable<Bool>

isFullNameOKObs = fullName
            .asObservable()
            .map { (val) -> Bool in
                // here business code to determine if the fullName is 'OK'
                let ok = val.characters.count >= 3
                return ok
            }
Run Code Online (Sandbox Code Playgroud)

不幸的是,map func中的bloc永远不会被调用!

这背后的原因是:

  1. fullName变量绑定到UITextField,并使用RxSwift示例中定义的双向运算符< - >.
  2. 将观察到isFullNameOKObs Observable 隐藏或显示我的ViewController的提交按钮.

任何帮助将不胜感激.

谢谢

该模型

class Model {

    let fullName = Variable<String>("")
    let isFullNameOKObs: Observable<Bool>

    let disposeBag = DisposeBag()

    init(){

        isFullNameOKObs = fullName
            .asObservable()
            .debug("isFullNameOKObs")
            .map { (val) -> Bool in
                let ok …
Run Code Online (Sandbox Code Playgroud)

observable ios swift rx-swift rx-cocoa

7
推荐指数
1
解决办法
3399
查看次数

将 SwiftUI 按钮绑定到 AnySubscriber,就像 RxCocoa 的按钮点击一样

我使用以下UIViewController基于RxSwift/RxCocoa的代码编写一个非常简单的 MVVM 模式来绑定UIButton点击事件以触发一些Observable工作并侦听结果:

import UIKit
import RxSwift
import RxCocoa

class ViewController: UIViewController {

    @IBOutlet weak var someButton: UIButton!

    var viewModel: ViewModel!
    private var disposeBag = DisposeBag()

    override func viewDidLoad() {
        super.viewDidLoad()
        viewModel = ViewModel()
        setupBindings()
    }

    private func setupBindings() {
        someButton.rx.tap
        .bind(to: self.viewModel.input.trigger)
        .disposed(by: disposeBag)

        viewModel.output.result
            .subscribe(onNext: { element in
            print("element is \(element)")
            }).disposed(by: disposeBag)
    }
}

class ViewModel {

    struct Input {
        let trigger: AnyObserver<Void>
    }

    struct Output {
        let result: …
Run Code Online (Sandbox Code Playgroud)

ios rx-swift rx-cocoa swiftui combine

7
推荐指数
1
解决办法
5064
查看次数