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.
It's easy for you to customize your controller as following, just set viewFrame and done.
See ViewFrameDemo for more information.
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.


