Observable
所属分类:网络编程
开发工具:Swift
文件大小:0KB
下载次数:0
上传日期:2018-03-03 19:09:28
上 传 者:
sh-1993
说明: 一小段代码,用于在项目中启用 React编程。,
(A small piece of code to enable reactive programming into your project.,)
文件列表:
Observable/ (0, 2018-03-03)
Observable/Observable.swift (3715, 2018-03-03)
Observer-example/ (0, 2018-03-03)
Observer-example/Observer-example.xcodeproj/ (0, 2018-03-03)
Observer-example/Observer-example.xcodeproj/project.pbxproj (13448, 2018-03-03)
Observer-example/Observer-example.xcodeproj/project.xcworkspace/ (0, 2018-03-03)
Observer-example/Observer-example.xcodeproj/project.xcworkspace/xcuserdata/ (0, 2018-03-03)
Observer-example/Observer-example.xcodeproj/project.xcworkspace/xcuserdata/rafael.xcuserdatad/ (0, 2018-03-03)
Observer-example/Observer-example.xcodeproj/project.xcworkspace/xcuserdata/rafael.xcuserdatad/UserInterfaceState.xcuserstate (23571, 2018-03-03)
Observer-example/Observer-example.xcodeproj/xcuserdata/ (0, 2018-03-03)
Observer-example/Observer-example.xcodeproj/xcuserdata/rafael.xcuserdatad/ (0, 2018-03-03)
Observer-example/Observer-example.xcodeproj/xcuserdata/rafael.xcuserdatad/xcdebugger/ (0, 2018-03-03)
Observer-example/Observer-example.xcodeproj/xcuserdata/rafael.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist (91, 2018-03-03)
Observer-example/Observer-example.xcodeproj/xcuserdata/rafael.xcuserdatad/xcschemes/ (0, 2018-03-03)
Observer-example/Observer-example.xcodeproj/xcuserdata/rafael.xcuserdatad/xcschemes/Observer-example.xcscheme (3451, 2018-03-03)
Observer-example/Observer-example.xcodeproj/xcuserdata/rafael.xcuserdatad/xcschemes/xcschememanagement.plist (488, 2018-03-03)
Observer-example/Observer-example/ (0, 2018-03-03)
Observer-example/Observer-example/AppDelegate.swift (2179, 2018-03-03)
Observer-example/Observer-example/Assets.xcassets/ (0, 2018-03-03)
Observer-example/Observer-example/Assets.xcassets/AppIcon.appiconset/ (0, 2018-03-03)
Observer-example/Observer-example/Assets.xcassets/AppIcon.appiconset/Contents.json (585, 2018-03-03)
Observer-example/Observer-example/Base.lproj/ (0, 2018-03-03)
Observer-example/Observer-example/Base.lproj/LaunchScreen.storyboard (1768, 2018-03-03)
Observer-example/Observer-example/Base.lproj/Main.storyboard (26509, 2018-03-03)
Observer-example/Observer-example/Info.plist (1094, 2018-03-03)
Observer-example/Observer-example/SecondViewController.swift (675, 2018-03-03)
Observer-example/Observer-example/ThirdViewController.swift (2122, 2018-03-03)
Observer-example/Observer-example/ViewController.swift (1804, 2018-03-03)
example-images/ (0, 2018-03-03)
example-images/Observable.gif (98346, 2018-03-03)
example-images/Observable2.gif (561487, 2018-03-03)
example-images/Observable3.gif (357290, 2018-03-03)
## Observable.Swift
UPDATE: Now you can add as much switches as you need, check the example project.
With this small piece of code (Observable.swift) you will be able to add reactivity programming to your app.
Simple, useful and easy to use.
```swift
var n = Observable(1)
var c: Int = 0
n.valueDidChange = { [unowned self] in
c = n.value // 2 then 3
}
n.value = 2
c // 2
n.value = 3
c // 3
// we can create and combine signals with Observable properties
```
ObservableSwitch:
With the ObservableSwitch you are able to combine signals and run some code depending on the status result.
You can specify the bool state you are expecting to run the closure (available: .AnyState, .OnlyTrue, .OnlyFalse).
Bellow we:
- enable/disable a UIButton based on the length of the username and password fields.
- check for strong passwords (length > 10)
- check for the master password (.OnlyTrue)
```swift
// signin enabler switch
let obSwitch = ObservableSwitch(.AnyState)
obSwitch.action = { [unowned self] (status: Bool) -> () in
self.signin.alpha = (status) ? 1 : 0.5
self.signin.enabled = status
}
// strong passwords switch
let obSwitchGreatPassword = ObservableSwitch(.AnyState)
obSwitchGreatPassword.action = { [unowned self] (status: Bool) -> () in
self.signin.backgroundColor = (status) ? UIColor.green : UIColor.blue
}
// master password switch
let obSwitchMasterPassword = ObservableSwitch(.OnlyTrue)
obSwitchMasterPassword.action = { [unowned self] (status: Bool) -> () in
let alertController = UIAlertController(title: "I know!", message: "It rocks!!!", preferredStyle: .alert)
let action = UIAlertAction(title: "=)", style: .default, handler: nil)
alertController.addAction(action)
self.present(alertController, animated: true, completion: nil)
}
// adding the signals to the ObservableTextField properties
self.username.addSignal({ [unowned self] in self.username.count >= 4 }, toSwitch: obSwitch)
self.password.addSignal({ [unowned self] in self.password.count >= 4 }, toSwitch: obSwitch)
self.password.addSignal({ [unowned self] in self.password.count > 10 }, toSwitch: obSwitchGreatPassword)
self.password.addSignal({ [unowned self] in self.password.text == "swift rocks" }, toSwitch: obSwitchMasterPassword)
```
![Alt text](https://raw.githubusercontent.com/colatusso/Observable.Swift/master/example-images/Observable3.gif)
ObservableTextField:
```swift
self.textField.textDidChange = { [unowned self] (text: String) -> () in
self.label.text = "Hi \(text)!"
}
```
![Alt text](https://raw.githubusercontent.com/colatusso/Observable.Swift/master/example-images/Observable2.gif)
Observable:
```swift
// you can create signals for Observable properties in case you need to observe/manage
// multiple properties/states
self.word.valueDidChange = { [unowned self] in
self.label.text = self.word.value
self.label.textColor = self.getRandomColor()
}
```
![Alt text](https://raw.githubusercontent.com/colatusso/Observable.Swift/master/example-images/Observable.gif)
## License
All this code is released under the MIT license.
近期下载者:
相关文件:
收藏者: