在UIKit中,每个控制器管理着应用中的一个页面,多页面的管理方式包括以下几种:
1)使用模态方式切换页面
2)使用导航控制器管理多个页面
3)使用标签控制器管理多个页面
模态,即模态方式,目的控制器被覆盖着源控制器,并接受用户的交互
,,,默认的动作是:从屏幕的下方弹出
下面介绍模态切换方式实现的三种方式以及页面之间数据的传递
,,,,代理切换
,,,,故事板的自动型segue
,,,,故事板的自动型segue
- <李>
<强>代码实现控制器的模态切换强>
李>切换动作中涉及的两个控制器
,,,,,源控制器:执行切换动作的控制器
,,,,,目的控制器:被切换并显示的控制器
源控制器使用以下方法切换目的控制器:
安康;(void) presentViewController: (UIViewController *) viewControllerToPresent 动画:(BOOL) flag 完成:(void (^)(空白))完成
,,,viewControllerToPresent参数:目的控制器
,,,旗参数:动画使能
,,,完成参数:切换动作完成时执行的代码
,,,,注意:该方法调用时,源控制器必须已经显示,不要在viewDidLoad方法中调用
源控制器和目的控制器使用以下方法完成页面返回的功能:,,
安康;(void) dismissViewControllerAnimated: (BOOL) flag 完成:(void (^)(空白))完成
,,,如果是目的控制器调用,会自动交给源控制器去执行返回动作,即源控制器和目的控制器都可以执行,且效果一样。
- <李>
<强>代码切换:示例1 强>
切换到UIAlertViewController
UIAlertController *, ac =, (UIAlertController alertControllerWithTitle: @”版本更新?”,信息:@“检测到新版本,是否到App 商店更新?”,preferredStyle: UIAlertControllerStyleAlert); 时间=UIAlertAction *, a1 [UIAlertAction actionWithTitle: @”更新”,风格:UIAlertActionStyleDefault 处理程序:^ (UIAlertAction *, _Nonnull 动作),{ ,,,[[UIApplication sharedApplication], openURL: updateURL); }); UIAlertAction *, a2 =, [UIAlertAction actionWithTitle: @“算”了,风格:UIAlertActionStyleCancel 处理程序:^ (UIAlertAction *, _Nonnull 动作),{ ,,,, }); [ac addAction: a1]; (ac addAction: a2); [self presentViewController: ac 动画:YES 完成:^ { ,,,NSLog(@“模态”); }];
,,,, UIAlertController是UIKit中的控制器,并必须使用模态方式显示
,,,, UIAlertController内部已经实现了点击按钮执行dismissViewController……方法
,,,, UIAlertController用于代替UIAlertView及UIActionSheet
- <李>
<强>代码切换:示例2 强>
李>切换到自定义的控制器
//源控制器:执行器执行切换动作 AMViewContoller *, vc =, [[UIViewController alloc], init); [self presentViewController: vc 动画:YES 完成:^ { ,,,NSLog(@“模态”); }];
//目的控制器:执行返回动作 [self dismissViewControllerAnimated: YES 完成:^ { ,,,NSLog(@“返回”); }];
- <李>
<强>代码切换:控制器间值的传递强>
李>正向传递:源控制器将数据传递到目的控制器
,,,传递时机:目的控制器被创建后,目的控制器显示前
,,,传递方法:
,,,,,,目的控制器添加属性
,,,,,,切换前,为目的控制器的属性赋值
//目的控制器 @interface AMViewControllerTwo: ui @property (原子,,复制),NSString *, str; @end @implementation AMViewControllerTwo 安康;(空白)viewDidLoad { ,,,(super viewDidLoad); ,,,NSLog(@“源控制器:% @”,,self.str),,,,, } @end
UIKit框架(9)控制器的模态切换方式(一)