上回書多次提到了模板的構(gòu)成
下面看下模板除了主場景還有什么其他的構(gòu)成吧
那么如何把這個三個頁面通過一個VC
管理
@interface MFTemplateBaseViewController : UIViewController
@property (nonatomic, strong) NSArray *scrollableViewControllers;
@end
這里給出整套框架最底層的一個VC:MFTemplateBaseViewController
, 調(diào)用方式是
MFTemplateBaseViewController *baseViewController = [[MFTemplateBaseViewController alloc] init];
MFChatRoomBoardController *leftController = [[MFChatRoomBoardController alloc] init];
id centerController = nil;
if ([[MFAppModel sharedObject].chatroomModelEx getRoomTemplateType] == kMFRoomTemplateTypeAppointment) {
centerController = [[MFAppointmentMainViewController alloc] init];
} else {
centerController = [[MFNormalMainViewController alloc] init];
}
MFChatRoomRightViewController *rightController = [[MFChatRoomRightViewController alloc] init];
baseViewController.scrollableViewControllers = @[leftController, centerController, rightController];
[MFAPP pushViewController:baseViewController animated:YES];
可以看到MFTemplateBaseViewController
將左中右, 以后可能更多個VC
作為自己的Child
for (int i = 0; i < self.scrollableViewControllers.count; ++i) {
UIViewController *controller = self.scrollableViewControllers[i];
if (controller && [controller respondsToSelector:@selector(setDelegate:)]) {
[controller performSelector:@selector(setDelegate:) withObject:self];
}
[scrollView addSubview:controller.view];
[self addChildViewController:controller];
}
MFTemplateBaseViewController
里通過這樣的方式將Child
的View
用自己的scrollView
管理.
那MFTemplateBaseViewController
里面做什么, 做一些3個頁面都需要的功能, 比如上面的標(biāo)題欄, 背景圖片等, 還有些3個頁面共享的邏輯, 這里因?yàn)槠邢蘧筒灰灰徽故玖? 大家可以自己腦補(bǔ)下.
MFTemplateBaseViewController
作為導(dǎo)航控制器push
和pop
的最終對象, 而不同的模板可以根據(jù)需要給MFTemplateBaseViewController
裝載不同的scrollableViewControllers
, 比如左側(cè)如果不是榜單頁面, 介意吧leftController
換掉而不影響整體的架構(gòu).
好吧, 俗話說脫離業(yè)務(wù)談架構(gòu)都是扯淡, 這里我只是結(jié)合自己的業(yè)務(wù)談?wù)勀0彘_發(fā)的架構(gòu)設(shè)計(jì). 有疑問的可以私信我或者留言, 愿意接受大家的批評指教.