RxAlertController 6.0.1

RxAlertController 6.0.1

测试已测试
Lang语言 SwiftSwift
许可证 Apache-2.0
发布最新版本2021年5月
SPM支持 SPM

Evgeny Sureev 维护。



  • 作者
  • Evgeny Sureev

RxAlertController

CI Status Version License Platform Carthage compatible

每次要在应用程序中显示信息时,我都厌倦了将相同的文件复制到项目中,所以我决定创建一个 pod。

修改日志

  • 5.0 移植到 Swift 5 和 RxSwift 5.0
  • 4.0 移植到 Swift 4.2
  • 3.0 将返回值从 Observable 转换为 SingleMaybe
  • 2.1 添加 Carthage 支持
  • 2.0 移植到 Swift 4
  • 1.1 添加显示已实例化(alert controller)的方法

介绍

RxAlertController 允许您使用 RxSwift 可观察流序列而不是传统的闭包来在屏幕上显示消息。因此,对话框可以与其它可观察对象连接,例如

api.someNetworkFunctionThatMayFail()
.retryWhen({ (error) -> Observable<Int> in
    return error.flatMap({ error -> Maybe<Int> in
        return UIAlertController.rx.show(in: self, title: "Error", message: error.localizedDescription, buttonTitles: ["Retry", "Abort"])
            .filter({value in value == 0})
    })
})
.subscribe(onNext, onError, etc)

并且使用来自 RxSwiftCommunity 的 RxMediaPicker,您可以像这样选择图片

UIAlertController.rx.show(in: self,
                       title: "Change avatar", 
                     message: "Select source", 
                     buttons: [.default("Take a picture"), .default("Select from gallery"), .cancel("Cancel")],
              preferredStyle: .actionSheet)
    .flatMap({ [unowned self] choice in
        if choice == 0 {
            return self.picker.takePhoto()
        } else {
            return self.picker.selectImage(source: .photoLibrary)
        }
    })
    .map { (original, edited) -> UIImage in
        return original
    }
    .bind(to: imageView.rx.image)
    .disposed(by: disposeBag)

示例

要运行示例项目,请克隆仓库,然后首先从示例目录运行pod install

要求

显然需要RxSwift。

安装

RxAlertController可以通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中

pod "RxAlertController"

此外,您还可以使用Carthage。要安装它,向Cartfile添加一行

github "evgeny-sureev/RxAlertController"

作者

Evgeny Sureev,[email protected]

许可证

RxAlertController在Apache License 2.0许可下可用。有关更多信息,请参阅LICENSE文件。