The RMStepsController is a custom step-by-step controller for iOS applications that allows users to navigate through a series of steps or screens. It provides an intuitive user experience for guided flows, onboarding processes, and any scenario that requires a multi-step form or tutorial. The controller manages the navigation, animation, and validation of steps, making it easy to implement and customize.

Key Features

  • Flexible and customizable step-by-step navigation
  • Supports both horizontal and vertical step layouts
  • Automatic validation of steps
  • Configurable step animations and transitions
  • Optional content view controllers for each step


The RMStepsController library can be easily installed using the CocoaPods dependency manager. Simply add the following line to your Podfile:

pod 'RMStepsController'

Then, run the pod install command in your project directory to install the library.


To start using the RMStepsController, follow these steps:

Step 1: Set Up RMStepsBar

In your view controller’s viewDidLoad method, add the following code to initialize an instance of RMStepsBar and customize its appearance:

// Create an instance of RMStepsBar
RMStepsBar *stepsBar = [[RMStepsBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 50)];

// Customize the appearance of stepsBar
stepsBar.tintColor = [UIColor blueColor];
stepsBar.backgroundColor = [UIColor whiteColor];

// Add stepsBar to your view controller's view
[self.view addSubview:stepsBar];

Step 2: Create Steps

Create a subclass of RMStepsController and define your steps in its stepViewControllers method. Each step is represented by a separate view controller:

- (NSArray *)stepViewControllers {
UIViewController *step1 = [self.storyboard instantiateViewControllerWithIdentifier:@"Step1ViewController"];
UIViewController *step2 = [self.storyboard instantiateViewControllerWithIdentifier:@"Step2ViewController"];
UIViewController *step3 = [self.storyboard instantiateViewControllerWithIdentifier:@"Step3ViewController"];

return @[step1, step2, step3];

Step 3: Customize Step Appearance

If you want to customize the appearance of individual steps, you can do so by implementing the willMoveToStep: method in your step view controllers. This method is called when the user navigates to a specific step:

- (void)willMoveToStep:(NSUInteger)step {
if (step == 0) {
// Customize appearance for Step 1
} else if (step == 1) {
// Customize appearance for Step 2
} else if (step == 2) {
// Customize appearance for Step 3


The RMStepsController offers several customizable options to fit your application’s requirements. Some of the available customization options are:

Change Step Layout

You can change the layout orientation of the steps by setting the value of the stepsOrientation property. By default, the steps are displayed horizontally. To change it to a vertical layout, use the following code:

self.stepsOrientation = RMStepsControllerOrientationVertical;

Customize Transition Animation

You can customize the animation and transition between steps by implementing the animationControllerForTransitionFromStep:toStep: method in your RMStepsController subclass. This method allows you to provide a custom transition animation object:

- (id)animationControllerForTransitionFromStep:(NSUInteger)fromStep toStep:(NSUInteger)toStep {
// Provide custom animation object for the transition

Enable/Disable Validation

If you want to disable the automatic validation of steps, simply set the enableValidation property to NO:

self.enableValidation = NO;


For detailed API documentation and usage instructions, refer to the official RMStepsController GitHub repository.


The RMStepsController library provides a convenient way to implement step-by-step navigation in your iOS applications. Its flexible and customizable features allow you to create smooth and engaging user experiences. Give it a try and see how it enhances your app’s onboarding, form filling, or tutorial processes!