RxAlertController-Swift 1.1.1

RxAlertController-Swift 1.1.1

pisces 维护。



  • Steve Kim

RxAlertController

Swift Build Status Version License Platform Carthage Compatible

  • 用于 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 文件。