WMPageController 中文介绍
An easy solution to page controllers like NetEase News
Click here: https://github.com/wangmchn/WMPageController-Swift
- Drag files in red frame to your project.
- Create an controller extends from
WMPageController.There are two ways to init theWMPageController:
Use the following constructor to init the controller:
- (instancetype)initWithViewControllerClasses:(NSArray *)classes
andTheirTitles:(NSArray *)titles;Here are two important porperties:
classes :contains the classes of child view controllers, just like [UITableViewController class];
titles :Each View controller's title to show in the menu view at the top of the view;
The usage is very familiar to UITableView, these are the methods need to implement:
- (NSInteger)numbersOfChildControllersInPageController:(WMPageController *)pageController;
- (__kindof UIViewController *)pageController:(WMPageController *)pageController viewControllerAtIndex:(NSInteger)index;
- (NSString *)pageController:(WMPageController *)pageController titleAtIndex:(NSInteger)index;Just implement these three datasource methods in YOUR WMPageController after initialize it.
To have a custom page controller,please set the properties in WMPageController ,They are: titleSize, titleColor, menuHeight, pageAnimatable, menuBGColor, menuItemWidth,and also itemsWidths.
1.If you init the WMPageController with child controller's class,override the -init method in WMPageController's childViewController, For example:
- (instancetype)init {
return [self initWithNibName:@"xxxViewController" bundle:nil];
}2.If you are using datasource, Just implement -pageController:viewControllerAtIndex: as following:
- (UIViewController *)pageController:(WMPageController *)pageController viewControllerAtIndex:(NSInteger)index {
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"WMViewController"];
return vc;
}There are 4 styles to choose, They are WMMenuViewStyleDefault, WMMenuViewStyleLine, WMMenuViewStyleFoold, WMMenuViewStyleFooldHollow;
You can easily change style by setting xxxPageController.style = WMMenuViewStyleLine.
If you want menuView to show on the navigation bar, set .showOnNavigationBar = YES;
pod 'WMPageController'
You can put every controller in WMPageController,But if you want have a UICollectionViewController in, please have an attention to UICollectionViewController's init method.
You should override the - init to give UICollectionViewController a UICollectionViewLayout.
Here is an example:
- (instancetype)init {
// init layout here...
self = [self initWithCollectionViewLayout:layout];
if (self) {
// insert code here...
}
return self;
}This project is under MIT License. See LICENSE file for more information.

