在启动MainViewController.viewDisLoad回调方法中,会调用来初始化各个Tab。其中我们将患者Tab设置为主Tab
- (void)setupSubviews {
_appointScheduleVCV104 = nil;
_myPatientsVC = nil;
_wzsChatListVCV104 = nil;
_mineRootVC = nil;
_appointScheduleVCV104 = [[AppointScheduleViewControllerV104 alloc]init];
_myPatientsVC = [[MyPatientsViewController alloc]init];
_wzsChatListVCV104 = [[WZSChatListViewControllerV104 alloc]init];
_mineRootVC = [[MineRootViewController alloc]init];
//V1.1.0
UINavigationController *nav1 = [[UINavigationController alloc]initWithRootViewController:_appointScheduleVCV104];
UINavigationController *nav2 = [[UINavigationController alloc]initWithRootViewController:_myPatientsVC];
UINavigationController *nav3 = [[UINavigationController alloc]initWithRootViewController:_wzsChatListVCV104];
UINavigationController *nav4 = [[UINavigationController alloc]initWithRootViewController:_mineRootVC];
self.viewControllers = [[NSArray alloc]initWithObjects:nav1,nav2,nav3,nav4, nil];
// 设置Tab标签文字
self.tabBar.tintColor = SegColor;
nav1.title = @"随诊";
nav2.title = @"患者";
nav3.title = @"消息";
nav4.title = @"我的";
//患者
UITabBarItem *tempItem = [[[self tabBar] items] objectAtIndex:0];
[tempItem setTag:30000+0];
[tempItem setImage:[UIImage imageNamed:@"tabbar_item1_unselected.png"]];
[tempItem setSelectedImage:[UIImage imageNamed:@"tabbar_item1_selected.png"]];
//预约
UITabBarItem *tempItem1 = [[[self tabBar] items] objectAtIndex:1];
[tempItem1 setTag:30000+1];
[tempItem1 setImage:[UIImage imageNamed:@"tabbar_item2_unselected.png"]];
[tempItem1 setSelectedImage:[UIImage imageNamed:@"tabbar_item2_selected.png"]];
//咨询
UITabBarItem *tempItem2 = [[[self tabBar] items] objectAtIndex:2];
[tempItem2 setTag:30000+2];
[tempItem2 setImage:[UIImage imageNamed:@"tabbar_item3_unselected.png"]];
[tempItem2 setSelectedImage:[UIImage imageNamed:@"tabbar_item3_selected.png"]];
//我的
UITabBarItem *tempItem3 = [[[self tabBar] items] objectAtIndex:3];
[tempItem3 setTag:30000+3];
[tempItem3 setImage:[UIImage imageNamed:@"tabbar_item4_unselected.png"]];
[tempItem3 setSelectedImage:[UIImage imageNamed:@"tabbar_item4_selected.png"]];
// 设置提示Badge
for (int i = 0 ; i < 4 ; i++) {
UILabel *badgeValueLab = [[UILabel alloc] init];
badgeValueLab.backgroundColor = [UIColor redColor];
badgeValueLab.tag = 20000 + i;
badgeValueLab.frame = CGRectMake(i*80+55, 6, 10, 10);
badgeValueLab.layer.cornerRadius = 5.0;
badgeValueLab.layer.masksToBounds = YES;
[self.tabBar addSubview:badgeValueLab];
badgeValueLab.hidden = YES;
}
[self setSelectedIndex:1]; // 设置患者为活跃Tab
}
接下来就进入了MyPatientViewController.viewDidLoad方法:
if ([[NSUserDefaults standardUserDefaults]boolForKey:KLoginStatus]){
[self loginViewDismissed];
} else {
[(MainViewController *)self.tabBarController showLoginView];
}
系统先判断是否登录,如果已经登录,则显示我的患者列表等本页面功能,如果没有登录,则显示登录注册页面:
- (void)showLoginView {
LoginRegisterViewControllerOne *lrvc = [[LoginRegisterViewControllerOne alloc]init];
lrvc.delegate = _myPatientsVC;
lrvc.DoctorModel = YES;
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:lrvc];
[self presentViewController:nav animated:NO completion:nil];
}
显示登录注册页面是调用MainViewController.showLoginView方法来实现的,方法就是将LoginRegisterViewControllerOne包在UINavigationController中,然后通过MainViewController显示出来。
在LoginRegisterViewControllerOne.viewDidLoad方法中:
//判断是否显示介绍页面
if ([[NSUserDefaults standardUserDefaults]boolForKey:KShowIntroView]) {
[self showIntroWithCrossDissolve];
}
具体显示应用介绍页面,则通过开源的EAIntroView来实现,如下所示:
- (void)showIntroWithCrossDissolve{
EAIntroPage *page1 = [EAIntroPage page];
EAIntroPage *page2 = [EAIntroPage page];
EAIntroPage *page3 = [EAIntroPage page];
EAIntroPage *page4 = [EAIntroPage page];
EAIntroPage *page5 = [EAIntroPage page];
if (_DoctorModel) {
if (DTDEVICE_IS_IPHONE5) {
page1.titleImage = [UIImage imageNamed:@"Dintro01.png"];
page2.titleImage = [UIImage imageNamed:@"Dintro02.png"];
page3.titleImage = [UIImage imageNamed:@"Dintro03.png"];
page4.titleImage = [UIImage imageNamed:@"Dintro04.png"];
page5.titleImage = [UIImage imageNamed:@"Dintro05.png"];
} else {
page1.titleImage = [UIImage imageNamed:@"Dintro01_960.png"];
page2.titleImage = [UIImage imageNamed:@"Dintro02_960.png"];
page3.titleImage = [UIImage imageNamed:@"Dintro03_960.png"];
page4.titleImage = [UIImage imageNamed:@"Dintro04_960.png"];
page5.titleImage = [UIImage imageNamed:@"Dintro05_960.png"];
}
} else {
if (DTDEVICE_IS_IPHONE5) {
page1.titleImage = [UIImage imageNamed:@"Pintro01.png"];
page2.titleImage = [UIImage imageNamed:@"Pintro02.png"];
page3.titleImage = [UIImage imageNamed:@"Pintro03.png"];
} else {
page1.titleImage = [UIImage imageNamed:@"Pintro01_960.png"];
page2.titleImage = [UIImage imageNamed:@"Pintro02_960.png"];
page3.titleImage = [UIImage imageNamed:@"Pintro03_960.png"];
page4.titleImage = [UIImage imageNamed:@"Pintro04_960.png"];
page5.titleImage = [UIImage imageNamed:@"Pintro05_960.png"];
}
}
EAIntroView *intro = [[EAIntroView alloc] initWithFrame:CGRectMake(0, 0, DTSCREEN_WIDTH, DTSCREEN_HEIGHT) andPages:@[page1,page2,page3,page4,page5]];
[intro setDelegate:self];
[intro showInView:self.view animateDuration:0.0];
}
- (void)introDidFinish{
NSLog(@"Intro callback");
}
当介绍页面完成后,就会自动从本类进入登录注册页面的注册状态。