第六课 控制器多态性,导航控制器,选项卡控制器
1. Multiple MVCs
a. UINavigationController
. 组成:title, navigationItem.rightBarButtonItems,back button, toolbarItems
b. segue
demo:
. 打开storyboard,选中myViewController ,菜单Editor - Embed in - Navigation Controller,这样为myViewController 生成了父容器Navigation;
. 添加新UIViewController,起名DetailVC;
. myViewController 上添加按钮,按control,从按钮拖拽到DetailVC;
. 运行,显示Navigation 里的myViewController,点击按钮,切换到DetailVC,点击<Back返回到myViewController;
继续:
. myViewController 上修改title,添加ButtonItem;
. 如果需要在点击按钮时,切换新VC时,代码传递数据,实现:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"mySegue"]) {
if ([segue.destinationViewController isKindOfClass:[secondVC class]]) {
secondVC *vc = (secondVC*)segue.destinationViewController;
vc.nValue = 9;
}
}
}
. 是否允许segue跳转,返回YES or NO;
- (BOOL)shouldPerformSegueWithIdentifier:(NSString*)identifier sender:(id)sender {
if ([segue.identifier isEqualToString:@“mySegue”]) {
return [self canSegue] ? YES : NO;
}
}
c. 代码实现
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
- (void)popViewControllerAnimated:(BOOL)animated;
a. storyboard 创建demo:
. 拖出一个tabbarController 控件,自动带2个item;
. 删除一个item,按住control拖动鼠标到NavigationController(第2点里创建的),这样就有2个item了;
. 运行,2个item项的tabbar实现了。
注:NavigationController可以嵌入到TabBarController中,反之不行;
UIViewController可以嵌入到上面2个VC中。 (菜单Editor - Embed in)。
1. Multiple MVCs
a. UINavigationController
. 组成:title, navigationItem.rightBarButtonItems,back button, toolbarItems
b. segue
demo:
. 打开storyboard,选中myViewController ,菜单Editor - Embed in - Navigation Controller,这样为myViewController 生成了父容器Navigation;
. 添加新UIViewController,起名DetailVC;
. myViewController 上添加按钮,按control,从按钮拖拽到DetailVC;
. 运行,显示Navigation 里的myViewController,点击按钮,切换到DetailVC,点击<Back返回到myViewController;
继续:
. myViewController 上修改title,添加ButtonItem;
. 如果需要在点击按钮时,切换新VC时,代码传递数据,实现:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"mySegue"]) {
if ([segue.destinationViewController isKindOfClass:[secondVC class]]) {
secondVC *vc = (secondVC*)segue.destinationViewController;
vc.nValue = 9;
}
}
}
. 是否允许segue跳转,返回YES or NO;
- (BOOL)shouldPerformSegueWithIdentifier:(NSString*)identifier sender:(id)sender {
if ([segue.identifier isEqualToString:@“mySegue”]) {
return [self canSegue] ? YES : NO;
}
}
c. 代码实现
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
- (void)popViewControllerAnimated:(BOOL)animated;
a. storyboard 创建demo:
. 拖出一个tabbarController 控件,自动带2个item;
. 删除一个item,按住control拖动鼠标到NavigationController(第2点里创建的),这样就有2个item了;
. 运行,2个item项的tabbar实现了。
注:NavigationController可以嵌入到TabBarController中,反之不行;
UIViewController可以嵌入到上面2个VC中。 (菜单Editor - Embed in)。
代码里可以实现,ui设计上不行,估计没有这么设计的吧。如果真需要,直接拖动控件(TabBar)吧。