It's a fairly common case, when the enabled state of button depends on some textable elements such as TextView, TextField. So this library allows the simplest way to achive this purpose with only few lines of code.
Typical login screen with short, beautiful validation code:
loginButton.isEnabled(by: usernameTextField, passwordTextField) { username, password in
username.characters.count > 5 && password.characters.count > 5
}you can also combine together UITextView with UITextField's:
signUpButton.isEnabled(by: firstnameTextField, lastnameTextField, bioTextView) { firstname, lastname, bio in
return /* validation value */
}So there is also oportunity to add not UI element:
-
Implement
Textableprotocol -
Be a successor from
NSObject -
Not forget about
dynamiclabel for property -
Done.
class Object: NSObject, Textable {
dynamic var value: String?
var textKey: String {
return "value"
}
}One important case is that you should clear button's bag. It removes all observers from textable elements. Usually it needs to do in deinit method.
deinit {
signUpButton.clearBag()
}To integrate NxEnabled, simply add the following line to your Podfile:
pod "NxEnabled"To integrate NxEnabled into your Xcode project using Carthage, specify it in your Cartfile:
github "Otbivnoe/NxEnabled"
Run carthage update to build the framework and drag the built NxEnabled.framework into your Xcode project.
Nikita Ermolenko, [email protected]
NxEnabled is available under the MIT license. See the LICENSE file for more info.
