iOS开发UI篇 -- 04011控制器切换方式之Modal介绍

本文介绍了iOS中Modal的使用,包括Modal的基本API、工作原理和常见使用场景。 Modal在控制器切换时,第一个视图会移到一边,由第二个视图完全显示,dismiss时则返回原位。Modal常用于弱关联的界面跳转,如从联系人列表进入添加界面。文中还提供了Modal的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、初识Modal

除了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;

2、Modal原理

present的时候,当第二个View显示完全显示的时候,第一个View会到一旁休息(性能问题),但是根控制器还是第一个View的Vc;

当第二个View要dismiss的时候,第一个View会出现到原来位置等待第二个View消失,同时第二个View的Vc销毁

ps:一般Modal出来的是导航控制器

3、Modal的使用场景

一般用push
两个控制器关联比较强的时候使用push,弱点的时候使用Modal(比如联系人列表和添加界面之后使用的就是Modal)

4、Modal代码展示

- (IBAction)jump {
    // 展示MJTwoViewController,在第二个Vc中添加一个导航栏
    MJTwoViewController *two = [[MJTwoViewController alloc] init];
    
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:two];
    
    [self presentViewController:nav animated:YES completion:^{
        NSLog(@"展示MJTwoViewController完毕.......");
    }];
}

- (IBAction)cancel {
    [self dismissViewControllerAnimated:YES completion:^{
        NSLog(@"关闭MJTwoViewController....");
    }];
//    [self.navigationController dismissViewControllerAnimated:YES completion:^{
//        NSLog(@"关闭MJTwoViewController....");
//    }];
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值