//
//  UIViewController+ChildSwitch.h
//  segmentSwitch
//
//  Created by wangyang on 5/13/15.
//  Copyright (c) 2015 IGIU. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface UIViewController (ChildControllerSwitch)

#pragma mark - 只读属性

/**
 当前显示的controller
 */
@property (nonatomic, strong) UIViewController *currentController;

/**
 将childContainer添加到视图中用来显示所有的child
 注意：childContainer只有一个子视图：childScrollView，childScrollView装载了所有的child。
 */
@property (nonatomic, strong) IBOutlet UIView *childContainer;

/**
 用来横滑切换chile controller。可以使用childScrollView.scrollEnable来禁止。
 其contentSize的高为childContainer.height
 */
@property (nonatomic, strong) UIScrollView *childScrollView;

/**
 返回该类别所管理的chile view controllers
 */
@property (nonatomic, copy) NSArray *childs;

#pragma mark - 需要配置的属性
/**
 childContainer的size，需要手动计算出来
 */
@property (nonatomic, assign) CGSize childContainerSize;

/**
 滑动childScrollView，滑动停止，调用该block。典型使用就是通知segment切换到指定位置
 */
@property (nonatomic, copy) void (^childScrollViewDidEndScroll) (NSInteger index);

#pragma mark - 可选属性
/**
 switchToChildControllerAtIndex后会调用
 */
@property (nonatomic, copy) void (^didFinishSwitchChild) (void);

#pragma mark - 方法

/**
 *  @brief  设置第一个要显示的controller
 *
 */
- (void)setFirstController:(UIViewController *)controller;

/**
 *  @brief  添加待显示的controllers
 *
 */
- (void)addOtherController:(NSArray *)otherControllers;

/**
 设置第一个需要显示的controller及其它待显示的controllers
 */
- (void)setFirstController:(UIViewController *)controller otherController:(NSArray *)otherControllers;

/**
 切换到指定位置的controller
 */
- (void)switchToChildControllerAtIndex:(NSUInteger)index;

@end
