A pixel-perfect, customizable replacement for UITableView section index in Swift with image support and automatic layout.
MYTableViewIndex is a Swift library that provides a pixel-perfect replacement for the UITableView section index, the vertical alphabetical index often seen in contacts or music apps. It replicates native iOS behavior while adding features like image display, extensive customization, and automatic layout management. It solves the limitation of the native index by allowing developers to use images and fully customize its appearance and behavior.
iOS developers building apps with alphabetically sorted lists, such as contact managers, media libraries, or directory apps, who need a customizable and enhanced section index control.
Developers choose MYTableViewIndex because it offers a drop-in replacement that matches native iOS fidelity while providing advanced features like image support, automatic keyboard avoidance, and full customization—saving development time and enabling richer user interfaces.
A pixel perfect replacement for UITableView section index, written in Swift
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows displaying images alongside or instead of text, and supports custom item types, overcoming the native index's text-only limitation as shown in the screenshots.
TableViewIndexController handles insets, keyboard avoidance, and layout automatically, reducing manual effort when integrating with scroll views.
Replicates the iOS section index pixel-perfectly while adding practical features like haptic feedback and RTL support, maintaining a familiar user experience.
Works with any UIScrollView subclass, including UITableViewController and UICollectionViewController, offering flexibility beyond standard UITableViews.
Without TableViewIndexController, developers must handle alignment and layout manually, which the README admits can be complex and error-prone.
Locked into the Apple ecosystem, it cannot be used for cross-platform development, adding vendor risk for projects targeting multiple platforms.
Requires implementing data source and delegate protocols, adding initial code complexity compared to simpler drop-in solutions.