ALOptionTabBarController (Swift/Obj-C)

ALOptionTabBarController (Swift/Obj-C)

Swift version available!

What is it?
ALOptionTabBarController is an easy-to-use custom interface element. At freelance project I have been working on modified UITabBarController for providing more options on selecting any UITabBarItem. This version is extended. ALOptionTabBarController is a subclass of UIViewController that provides opportunity to show options list on tapping the UITabBarItem. There are three option types: Standard, Column and Table.
Standard option acts like usual UItabBarController. It presents specified UIViewController on tap.
Column option draws a column with options (see images) right above the selected UITabBarItem.
Table options shows a UITableView with options.
Project includes test project and a folder with ALOptionTabBarController files. Test project implements ALOTBC with five UITabBarItems: Three for example of tabs with options (1 for column, 2 for table type. Note: These screens load URLs via UIWebView) and two bar items with standard options type (Instructions screen and Contacts screen).

Some notes on Router object
Router is neither Model, nor Controller, nor View. Router is an extra object (subclass of NSObject, actually) that takes control of navigation and view controller presentations. It is used in MVVM+R and MVCVM+R(I’ll put a link later) design patterns. Basic description of Router is simple: Controller asks Router to present another Controller, Router has navigation controllers (UINavigationController and UITabBarController) as it’s properties; that’s how Router present Controllers. If you have any questions, do not hesitate to ask me via comments or via message box.


  • Extended UITabBarController with three options: Standard, Column, Table
  • Easy to implement: Create UITabBarItem and set options for it
  • Code is documented and commented
  • MVC-based code (+Router object)
  • Swift and Objective-C versions

Features to add:

  • Even simpler code for initializing
  • Visual elements for better look
  • Delegate methods (like UITabBarControllerDelegate)
  • Suggest more!

(1.1.1) 15 February 2016

  • Updated Swift version to support Swift 2.1 syntax
(1.1) 16 March 2015
  • Added Swift version with test project
(1.0) 18 February 2015
  • Released

Please write me an email (via the message box on the right side) if you have any questions or suggestions.