zoukankan      html  css  js  c++  java
  • 【iOS基础控件 -15

    A.概念
    1.也可以用来切换控制器
    2.如ActionSheet
     
    除了push之外,还有另外一种控制器的切换方式,那就是Modal
    任何控制器都能通过Modal的形式展示出来
    Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为止

    以Modal的形式展示控制器
    - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion

    关闭当初Modal出来的控制器
    - (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion;
     
     
    B.使用
    1.使用代码
    展示modal控制器: presentViewController
    隐去modal界面:dismissViewController
     
    源控制器和modal控制器的关系
    • rootViewController一直都是源控制器
    • 系统会自己替换view
    • 源控制器中有一个属性指向modal控制器:presentedViewController(所以modal控制器才不会被销毁)
     
    使用NavigationController包装一下modal控制器,添加上一个导航条
     
    AppDelegate:
    复制代码
     1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     2     // Override point for customization after application launch.
     3    
     4     // 设置window
     5     self.window = [[UIWindow alloc] init];
     6     self.window.backgroundColor = [UIColor grayColor];
     7     self.window.frame = [[UIScreen mainScreen] bounds];
     8     [self.window makeKeyAndVisible];
     9    
    10     // 创建一个UIView
    11     UIViewController *viewController = [[UIViewController alloc] init];
    12     viewController.view.backgroundColor = [UIColor redColor];
    13     UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 200, 50)];
    14     [button setTitle:@"弹出modal" forState:UIControlStateNormal];
    15     [button addTarget:self action:@selector(popToModal) forControlEvents:UIControlEventTouchUpInside];
    16    
    17     [viewController.view addSubview:button];
    18     self.window.rootViewController = viewController;
    19    
    20     return YES;
    21 }
    22 
    23 - (void) popToModal {
    24     UIViewController *viewController = self.window.rootViewController;
    25    
    26     // 再创建一个UIView用来切换
    27     UIViewController *modalViewController = [[UIViewController alloc] init];
    28     modalViewController.view.backgroundColor = [UIColor blueColor];
    29    
    30     // 创建一个NavigationController来包装
    31     UINavigationController *naviController = [[UINavigationController alloc] initWithRootViewController:modalViewController];
    32     modalViewController.navigationItem.title = @"蓝色";
    33    
    34     // 切换到navigationController
    35     [viewController presentViewController:naviController animated:YES completion:^{
    36         NSLog(@"完成modal切换");
    37     }];
    38 }
    复制代码
     
    Image(265)Image(266)
     
     
    2.使用storyboard
    (1)拖入相应控制器并连线
    Image(267)
     
    使用“modal”进行跳转,而不是之前的“push”
    Image(268)
     
    (2)关闭modal,回跳
    GreenViewController:
    复制代码
    1 - (IBAction)goback:(UIBarButtonItem *)sender {
    2     // 关闭modal
    3     // 1.可以使用自己
    4 //    [self dismissViewControllerAnimated:YES completion:nil];
    5    
    6     // 2.也可以使用上一层的navigation controller
    7     [self.navigationController dismissViewControllerAnimated:YES completion:nil];
    8 }
    复制代码
     
    (3)关于modal连线的数据传输问题
    a.顺传:使用segue的控制器
    “红”控制器传送字符串给“绿”控制器:
    复制代码
     1 /*
     2 * 在这里传输数据给modal控制器
     3 * 顺传,使用控制器
     4 */
     5 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
     6     // 1.取得modal转向的controller,这里是中间的navigation controller
     7     UINavigationController *nvController =  (UINavigationController *)segue.destinationViewController;
     8    
     9     // 2.取得modal最终显示的controller, 就是最后的UIViewController
    10     GreenViewController *greenController = (GreenViewController *)nvController.topViewController;
    11    
    12     // 3.传输数据
    13     greenController.name = @"我就是一个modal窗口";
    14 }
    复制代码
     
    Image(269)
     
    b.逆传:使用代理
    “绿”控制器传送数据给“红”控制器
  • 相关阅读:
    nodeJS学习(8)--- WS/...开发 NodeJS 项目-节3 <使用 mongodb 完整实例过程>
    nodeJS学习(7)--- WS开发 NodeJS 项目-节2 <安装&设置&启动 mongodb 数据库++遇到的问题>
    nodeJS学习(6)--- Sublime Text3 配置Node.js 开发环境
    nodeJS学习(5) --- sublime Text3 安装使用
    nodeJS学习(4)--- webstorm/...开发 NodeJS 项目-节1
    nodeJS学习(3)--- npm 配置和安装 express4.X 遇到的问题及解决
    二叉查找树-优化版,使用了指针引用
    二叉查找树实现-双向链表
    数据结构-中序转后序
    MySQL 游戏排行榜
  • 原文地址:https://www.cnblogs.com/kengsir/p/4281924.html
Copyright © 2011-2022 走看看