UITabBarController
开始运行,只加载第一个页面,使用哪个再加载哪个,不销毁
- 添加子控制器
UIViewController *v1 = [UIViewController new];
[tabBarController addChildViewController:v1];
UITabBar
UITabBarController
下方的导航栏
UITabBarButton
UITabBarButton
里由什么内容,由对应子控制器的tabBarItem
属性决定tabBarItem
有以下属性影响UITabBarButton
的内容
//标题文字
@property(nonatomic,copy) NSString *title;
//图标
@property(nonatomic,retain) UIImage *image;
//选中时的图标
@property(nonatomic,retain) UIImage *selectedImage;
//提醒数字/文字
@property(nonatomic,copy) NSString *badgeValue;
v1.tabBarItem.title = @"联系人";
v1.tabBarItem.image = [UIImage imageNamed:@"pic"];
App主流UI框架结构
跳转方式
Push
的默认效果:新控制器从右往左,直到盖住之前的控制器,一般是业务逻辑有关系使用Modal
的默认效果:新控制器从屏幕下往上钻,直到盖住之前的控制器,一般是业务逻辑没有关系使用
//以Modal的形式展示控制器
-(void)persentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion
//关闭当初Model出来的控制器
-(void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion
代码跳转
- 以
Modal
的形式展示控制器
该方法是谁负责显示,谁负责关闭,A打开B,B运行dismissViewControllerAnimated
时,其实是向A发送消息,由A负责关闭
UIViewController *VC = [UIViewController new];
VC.view.backgroundColor = [UIColor redColor];
//设置跳转方式,默认Modal
VC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
//completion是回调
[self presentViewController:VC animated:YES completion:^{
NSLog(@"跳转成功!");
}];
//跳转回去
[self dismissViewControllerAnimated:YES completion:nil];
跳转的展现形式
typedef NS_ENUM(NSInteger, UIModalTransitionStyle) {
UIModalTransitionStyleCoverVertical = 0,
UIModalTransitionStyleFlipHorizontal API_UNAVAILABLE(tvos),
UIModalTransitionStyleCrossDissolve,
UIModalTransitionStylePartialCurl API_AVAILABLE(ios(3.2)) API_UNAVAILABLE(tvos),
};
iOS 13.0
以后presentViewController
不全屏的问题
IOS13以后默认为:UIModalPresentationAutomatic(不全屏+缩放+透明背景),可以改为原来的值,就可以全屏展示了
self.modalPresentationStyle = UIModalPresentationOverFullScreen;//全屏+透明背景+不缩放
//UIModalPresentationFullScreen 全屏+白色背景
navigationController
跳转
//如果有navigationController,也可以执行该方法
[self.navigationController pushViewController:VC animated:YES];
//回去
[self.navigationController popViewControllerAnimated:YES];
//跳转指定的页面
NSArray *vcArr = self.navigationController.viewControllers;
[self.navigationController popToViewController:vcArr[0] animated:YES];//跳转最外面