RxAlertController
每次要在应用程序中显示信息时,我都厌倦了将相同的文件复制到项目中,所以我决定创建一个 pod。
修改日志
5.0
移植到 Swift 5 和 RxSwift 5.04.0
移植到 Swift 4.23.0
将返回值从Observable
转换为Single
和Maybe
2.1
添加 Carthage 支持2.0
移植到 Swift 41.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文件。