advantis
5/27/2014 - 12:58 PM

Generic UITabBarController replacement

Generic UITabBarController replacement

//
//  Copyright © 2014 Yuri Kotov
//

#import "ADVTabViewController.h"

@interface ADVTabViewController ()
@property (nonatomic, readwrite) UIViewController *selectedViewController;
@end

@implementation ADVTabViewController

- (void)setSelectedIndex:(NSUInteger)index {
	if (index != _selectedIndex) {
		_selectedIndex = index;
		self.selectedViewController = self.viewControllers[index];
	}
}

- (void)setViewControllers:(NSArray *)viewControllers {
	_selectedIndex = 0;
	_viewControllers = [viewControllers copy];
	self.selectedViewController = [viewControllers firstObject];
}

- (void)setSelectedViewController:(UIViewController *)controller {
	[_selectedViewController willMoveToParentViewController:nil];
	[_selectedViewController.view removeFromSuperview];
	[_selectedViewController removeFromParentViewController];
	_selectedViewController = controller;

	[self addChildViewController:controller];
	[self addChildView:controller.view];
	[controller didMoveToParentViewController:self];
}

- (void)addChildView:(UIView *)subview {
	subview.frame = self.view.bounds;
	subview.translatesAutoresizingMaskIntoConstraints = YES;
	subview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
	[self.view addSubview:subview];
}

@end
//
//  Copyright © 2014 Yuri Kotov
//

#import <UIKit/UIKit.h>

@interface ADVTabViewController : UIViewController

@property (nonatomic) NSUInteger selectedIndex;
@property (nonatomic, copy) NSArray *viewControllers;
@property (nonatomic, readonly) UIViewController *selectedViewController;

@end