RxAlertController
- 用于 UIAlertController 的响应式编程库。
功能
- RxSwift 兼容
- 易于使用
使用
导入
// cocoapods
import RxAlertController_Swift
// carthage
import RxAlertController
简单显示
RxAlertController(title: "title", message: "message", preferredStyle: .alert)
.add(.init(title: "ok", style: .default))
.show(in: self)
.keep(by: disposeBag)
使用completion演示
RxAlertController(title: "title", message: "message", preferredStyle: .alert)
.add(.init(title: "ok", style: .default))
.show(in: self) {
print("presenting completed")
}.keep(by: disposeBag)
当操作具有非空id时进行订阅
RxAlertController(title: "title", message: "message", preferredStyle: .alert)
.add(.init(title: "cancel", style: .cancel))
.add(.init(title: "ok", id: 1, style: .default))
.show(in: self)
.subscribe(onNext: {
print("\($0.action.title) clicked")
}).disposed(by: disposeBag)
使用文本框演示
RxAlertController(title: "title", message: "message", preferredStyle: .alert)
.add(.init(title: "cancel", style: .cancel))
.add(.init(title: "ok", id: 1, style: .default))
.addTextField {
$0.placeholder = "textfield 1"
}
.addTextField {
$0.placeholder = "textfield 2"
}
.show(in: self)
.subscribe(onNext: {
let text1 = $0.textFields?.first?.text ?? "nil"
let text2 = $0.textFields?.last?.text ?? "nil"
print("\($0.action.title) clicked -> text1: \(text1), text2: \(text2)")
}).disposed(by: disposeBag)
操作表
RxAlertController(title: "title", message: "message", preferredStyle: .actionSheet)
.add(.init(title: "cancel", style: .cancel))
.add(.init(title: "1", id: 1, style: .default, userInfo: ["checked": true]))
.add(.init(title: "2", id: 2, style: .default))
.add(.init(title: "3", id: 3, style: .default))
.add(.init(title: "4", id: 4, style: .default))
.show(in: self)
.subscribe(onNext: {
print("\($0.action.title) clicked: \($0.action.id)")
}).disposed(by: disposeBag)
带多项操作的操作表
let ids: [Int] = [1, 2, 3, 4]
RxAlertController(title: "title", message: "message", preferredStyle: .actionSheet)
.add(.init(title: "cancel", style: .cancel))
.add(
ids.compactMap {
let title = "\($0)"
switch $0 {
case 1:
return RxAlertAction(title: title, id: $0, style: .default, userInfo: ["checked": true])
default:
return RxAlertAction(title: title, id: $0, style: .default)
}
}
)
.show(in: self)
.subscribe(onNext: {
print("\($0.action.title) clicked: \($0.action.id)")
}).disposed(by: disposeBag)
示例
要运行示例项目,克隆仓库,然后首先从Example目录运行pod install
。
安装
CocoaPods
RxAlertController 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中
pod 'RxAlertController-Swift', '~> 1.1.0'
Carthage
Carthage 是一个去中心化的依赖项管理器,它构建您的依赖项并为您提供二进制框架。
您可以使用以下命令使用 Homebrew 安装 Carthage:
$ brew update
$ brew install carthage
要使用 Carthage 将 RxAlertController 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它
github "pisces/RxAlertController" ~> 1.1.0
运行 carthage update
构建框架并将构建的 RxAlertController.framework
拖放到您的 Xcode 项目中。
需求
iOS 部署目标 9.0 以上
作者
Steve Kim, [email protected]
许可证
RxAlertController 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。