Krivoblotsky gave the correct answer! I would like to talk more about those who are embarrassed, because for the full implementation there are several more moving parts. Say you have the app below. As soon as you click on the house or profile icon, the corresponding view will be displayed. Say instead of viewing the profile, you want to add your custom transition / behavior.

To do this: 1. Given the ProfileViewController class, you want to include the UITabBarControllerDelegate in your ProfileViewController
@interface ProfileViewController : ViewController <UITabBarControllerDelegate> @end
2. Access the delegate tabBarcontroller and set it as yourself in your ProfileViewController.m viewDidLoad
self.tabBarController.delegate = self;
Essentially, that means hey, do you know the tabBarController delegate? (The guy who is involved in events). I know a guy and let this guy (myself) handle these events. As in English, you are delegating work with other people (you are a delegating entity). The thing that handles the work is DELEGATE.
3. Implementation of user behavior
-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController: if ([viewController isKindOfClass:[ProfileViewController class]]){ NSLog(@"It a profile"); return NO }; }; else{ return YES; }
Returning NO says that when ProfileViewController is selected, do not follow the default behavior and do not show it.
Great explanation from delegates
source share