标签: rx-cocoa

使用RxSwift重新加载Tableview

我正在使用RxSwift进行tableview.每次从api获取数据后我都需要重新加载我的表但是我没有这样做.我找不到任何解决方案.有人可以帮忙吗?

我有一个从Api的响应获得的地方数组.我在视图中使用了这个代码加载,但是在更新数组时它没有被调用.

在此输入图像描述

ios swift rx-swift rx-cocoa

3
推荐指数
2
解决办法
8761
查看次数

将rx.value添加到我的CustomView

假设我有一个带有值的CustomView.我想使用rx.value(Observable)将该值公开给世界,而不是必须通过值(Int)访问它.

final class CustomView: UIView {
   var value: Int = 0
   ...
}
Run Code Online (Sandbox Code Playgroud)

我从UIStepper + Rx复制了这个:

extension Reactive where Base: CustomView {

    var value: ControlProperty<Int> {
        return base.rx.controlProperty(editingEvents: [.allEditingEvents, .valueChanged],
            getter: { customView in
                customView.currentValue
        }, setter: { customView, value in
            customView.currentValue = value
        }
        )
    }

}

final class CustomView: UIControl {

    fileprivate var currentValue = 1 {
        didSet {
            checkButtonState()
            valueLabel.text = currentValue.description
        }
    }

   // inside i set currentValue = 3
}
Run Code Online (Sandbox Code Playgroud)

但customView.rx.value不会发出任何值

ios swift rx-swift rx-cocoa

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

RxSwift:使用DisposeBag的最佳实践是什么?

现在,我需要基于配置API更改应用程序主题(颜色),因此我正在使用RxCocoa,RxSwift框架在每个视图控制器上创建可观察的对象,以在应用程序上应用新主题。

我的问题是使用DisposeBag的最佳实践是什么:

  • 在每个视图控制器上创建新的DisposeBag对象?
  • 还是对所有可观察物使用一个全局DisposeBag?

提前致谢

swift rx-swift rx-cocoa

3
推荐指数
2
解决办法
2209
查看次数

RxCocoa-为什么PublishRelay不具有asDriver()方法?

在RxCocoa上,我想知道为什么PublishRelay没有像BehaviorRelay这样的asDriver()方法?当前,如果我想将publishRelay转换为Driver,我必须指定在发生错误的情况下要返回的内容,鉴于继电器无法生成错误,这看起来很奇怪。

ios rx-swift rx-cocoa

3
推荐指数
2
解决办法
676
查看次数

UIButton 点击​​事件的驱动程序和信号哪个更好?

我是 RxSwift 和 RxCocoa 的新手。rx.tap.asDriver()在我的项目中,UIButton 点击​​事件在很多地方都得到处理,但我想Signal在这种情况下更好。

我的认可是:

  • 驱动程序用于状态或变量
  • 信号用于事件

请给我建议。谢谢

rx-swift rx-cocoa

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

RxSwift.CombineLatest.并非所有可观测量都被发射出去

Observable.combineLatest(...){...}包含几个可观察对象,但是没有发出一些这些可观察对象.

只有在发出此方法中的所有可观察对象时,combineLatest才会发出.

如何跳过不发出的observable并发出combineLatest?

let tap = firstButton.rx.tap.asObservable().map{ (_) -> Observable<Item> ...}

let textfieldObservable = viewTextField.rx.text.orEmpty.asObservable()

submitButton.rx.tap.withLatestFrom(Observable.combineLatest(textfieldObservable, tap ... )).flatMapLatest({
...
// this method will not be executed without tap on firstButton before tapping on submitButton

}
)
Run Code Online (Sandbox Code Playgroud)

ios swift rx-swift rx-cocoa

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

使 UIButton isHighlighted 属性成为 Observable

我正在尝试为我的 UIButton 创建 isHighlighted Observable,以便在每次 UIButton 的 isHiglighted 更改时发送序列。我写过这样的东西

extension Reactive where Base: UIButton {

    var isHighlighted: Observable<Bool> {

        let property = self.base.rx.controlProperty(editingEvents: .allTouchEvents,
                                                    getter: { _ in self.base.isHighlighted },
                                                    setter: { (_, _) in })
        return property
            .distinctUntilChanged()
            .asObservable()
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,它不适用于.touchUpInside. 如果我将手指拖到 UIButton 外面然后回来,它工作正常,但不适用于点击动作。我认为.touchUpInside它仍然在很短的时间内突出显示。

ios swift rx-swift rx-cocoa

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

更改UITextField的文本不会触发rx.text绑定器

我有一个UITextField名为commentField,我创建了Observable<Bool>这样的:

let isCommentFieldValid = self.commentField.rx.text.orEmpty.map({ !$0.isEmpty })
Run Code Online (Sandbox Code Playgroud)

此可观察量确定是否启用按钮.问题是当我更改commentField喜欢这个的文本属性时:

self.commentField.text = ""
Run Code Online (Sandbox Code Playgroud)

isCommentFieldValid不会再次触发,因此,按钮的状态不会改变.使用UI的任何版本都可以工作:如果我通过键盘从字段中删除所有文本,则isCommentFieldValid会更新,但是通过代码它不会更新.

有什么理由不起作用吗?

swift rx-swift rx-cocoa

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

类型*的值没有成员'rx'

我正在尝试从AlamofireImage为ImageDownloader制作一个小的反应式包装:

import Foundation
import UIKit.UIImage
import AlamofireImage
import RxCocoa
import RxSwift


extension Reactive where Base: ImageDownloader {

    public func download(urlRequest: URLRequest, filter: ImageFilter?) -> Observable<UIImage> {

        return Observable.create { observer in

            self.base.download(urlRequest, filter: filter) { response in

                if let error = response.error {
                    observer.onError(error)
                } else if let image = response.value {
                    observer.onNext(image)
                }
            }
            return Disposables.create()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它编译没有问题。但是,当我尝试调用rx.downloadImageDownloader的实例时,出现错误,提示那里没有'rx'扩展名:

类型“ ImageDownloader”的值没有成员“ rx”错误

任何猜测为什么会这样?

ios swift rx-swift rx-cocoa reactive

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

不推荐使用 RxCocoa RxSwift 'debounce':改用 DispatchTimeInterval 重载

如何将不推荐使用的去抖动代码转换为使用 DispatchTimeInterval?

这是弃用的代码:

self.myObservable.asDriver().debounce(2).drive(onNext: {(v) in
            doSomething()
        }).disposed(by: self.disposeBag)
Run Code Online (Sandbox Code Playgroud)

rx-swift rx-cocoa

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

标签 统计

rx-cocoa ×10

rx-swift ×10

swift ×7

ios ×6

reactive ×1