效果展示:
Gif
功能描述:
- 頁面為不同的ViewController,可以左右滑動.
- 頂部導(dǎo)航條可點(diǎn)擊切換(雙擊刷新事件回調(diào)),可以左右滑動查看.
- 按需顯示的編輯菜單,可以長按拖動順序/添加/刪除
使用:
- 工程中的ERPageController文件拖入工程
#import "ERSegmentController.h"
- 初始化控件
ERSegmentController *pageManager = [[ERSegmentController alloc] init];
pageManager.view.frame = CGRectMake(0, 64, ScreenWidth, ScreenHeight - 64 - 49);
pageManager.segmentHeight = 25;//導(dǎo)航條高度
pageManager.progressWidth = 15;//導(dǎo)航條底橫線度寬度
pageManager.progressHeight = 1;//導(dǎo)航條底橫線高
pageManager.itemMinimumSpace = 10;//導(dǎo)航條item直接的間距
pageManager.normalTextFont = [UIFont systemFontOfSize:12];//未選中字體大小
pageManager.selectedTextFont = [UIFont systemFontOfSize:16];//已選中字體大小
pageManager.normalTextColor = [UIColor blackColor];//未選中字體顏色
pageManager.selectedTextColor = [UIColor redColor];//已選中字體顏色
pageManager.dataSource = self;//頁面管理數(shù)據(jù)源
pageManager.menuDataSource = self;//菜單管理數(shù)據(jù)源, 如果不設(shè)置改代理則沒有菜單按鈕
pageManager.editMenuIconIgV.image = [UIImage imageNamed:@"editButtonImage"];//編輯菜單icon (按需設(shè)置)
pageManager.delegate = self;//相關(guān)事件返回代理
[self.view addSubview:pageManager.view];
[self addChildViewController:pageManager];
- 通過代理方法傳入數(shù)據(jù)源
@protocol ERPageViewControllerDataSource <NSObject>
@required
/**
返回子控制器總數(shù),類似TableViewDataSource
@param pageViewController self
@return 子控制器總數(shù)
*/
- (NSInteger)numberOfControllersInPageViewController:(ERPageViewController *)pageViewController;
/**
返回對應(yīng)index的ViewController
@param pageViewController self
@param index 當(dāng)前index
@return 需要展示的ViewController
*/
- (UIViewController *)pageViewController:(ERPageViewController *)pageViewController childControllerAtIndex:(NSInteger)index;
/**
子控制器title
@param pageViewController self
@param index 當(dāng)前index
@return title
*/
- (NSString *)pageViewController:(ERPageViewController *)pageViewController titleForChildControllerAtIndex:(NSInteger)index;
@end
- 如果需要編輯菜單則需要簽訂代理
<ERSegmentMenuControllerDataSource>
并實(shí)現(xiàn)菜單數(shù)據(jù)源代理方法
@protocol ERSegmentMenuControllerDataSource <NSObject>
@required;
/**
已經(jīng)選擇的頻道列表信息
@param segmentMenuController self
@return 必須為字典型數(shù)組(必須包含一個KEY為@"name"的字符串)
*/
- (NSMutableArray<NSDictionary *> *)selectedChannelLisInSegmentMenuController:
(ERSegmentMenuController *)segmentMenuController;
@optional;
/**
未選擇的頻道列表信息
@param segmentMenuController self
@return 可以為nil ,若不為nil則必須為字典型數(shù)組(必須包含一個KEY為
@"name"的字符串)
*/
- (NSMutableArray<NSDictionary *> *)unSelectChannelListInSegmentMenuController:
(ERSegmentMenuController *)segmentMenuController;
/**
每組標(biāo)題
@param segmentMenuController segmentMenuController
@param sectionHeaderLabel 組頭Label
@param section section
@return title
*/
- (NSString *)segmentMenuController:(ERSegmentMenuController *)segmentMenuController sectionHeaderLabel:(UILabel
*)sectionHeaderLabel titleForHeaderInSection:(NSInteger)section;
@end
- 頁面切換的監(jiān)聽,菜單按鈕的點(diǎn)擊可通過
<ERSegmentControllerDelegte>
獲取
@protocol ERSegmentControllerDelegte <NSObject>
@optional
/**
導(dǎo)航按鈕點(diǎn)擊事件回調(diào)
@param segmentController self
@param indexPath indexPath
*/
- (void)segmentController:(ERSegmentController *)segmentController
didSelectItemAtIndexPath:(NSIndexPath *)indexPath;
/**
導(dǎo)航菜單編輯按鈕點(diǎn)擊回調(diào)
@param segmentController self
@param editMenuButton editMenuButton
*/
- (void)segmentController:(ERSegmentController *)segmentController didSelectEditMenuButton:(UIButton *)editMenuButton;
/**
導(dǎo)航按鈕雙擊事件回調(diào)
@param segmentController self
@param indexPath indexPath
*/
- (void)segmentController:(ERSegmentController *)segmentController itemDoubleClickAtIndexPath:(NSIndexPath *)indexPath;
/**
頁面切換滾動完成回調(diào)
@param pageController superClass
@param fromIndex fromIndex
@param toIndex toIndex
*/
- (void)pageControllerDidScroll:(ERPageViewController *)pageController fromIndex:(NSInteger)fromIndex toIndex:(NSInteger)toIndex;
@end
注意事項(xiàng): 數(shù)據(jù)模型我使用的是(NSMutableArray <NSDictionary *> *)
通過 key=@"name" 獲取頁面標(biāo)題 (可根據(jù)自己需求更改)
Demo地址:
GitHub - ERPageController 喜歡請給個Star ~ 感謝~
參考類庫 (已表感謝 ! 學(xué)習(xí)并膜拜大神們 ~)
DDNews
ZYColumnViewController
LXReorderableCollectionViewFlowLayout
TYPagerController