A fully customizable Swift library for creating UITableView-based forms with ease.
Former is a Swift library that simplifies building UITableView-based forms for iOS apps. It provides a set of pre-built form components like text fields, switches, pickers, and labels, along with a declarative API to manage form layout, events, and updates. It solves the problem of repetitive and error-prone UITableView delegate/datasource code when creating dynamic forms.
iOS developers building apps that require complex forms, settings screens, or data entry interfaces using UITableView. It's especially useful for those who want a maintainable, declarative approach to form creation.
Developers choose Former because it drastically reduces boilerplate code while maintaining full customizability. Unlike manual UITableView implementations, it offers a clean API, built-in form components, and easy event handling, speeding up development without sacrificing control over the UI.
Former is a fully customizable Swift library for easy creating UITableView based form.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables form definition with chainable syntax, reducing UITableView boilerplate code, as demonstrated in the simple example where rows and sections are configured inline.
Includes built-in row formers for common inputs like text fields, switches, and pickers, detailed in the RowFormer table with GIF demos for each type.
Supports custom UITableViewCell subclasses by conforming to protocols, allowing full control over cell appearance without inheriting from default classes.
Provides methods to add, insert, and remove rows with animations, improving user experience for dynamic forms, as shown in the SectionFormer examples.
Tightly coupled to UITableView, making it unsuitable for modern iOS development with SwiftUI or for cross-platform projects, limiting future-proofing.
The README admits that feature requests may not be accommodated due to lack of time or alignment, suggesting potential stagnation and slower updates.
Creating custom RowFormers requires inheriting from BaseRowFormer and conforming to specific protocols, which can be intricate and error-prone for developers.