温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

UIKit框架(9)控制器的modal切换方式(二)

发布时间:2020-07-10 10:59:57 来源:网络 阅读:541 作者:ymanmeng123 栏目:移动开发
  • storyboard中定义切换关系

在storyboard中可以添加多个控制器,并且使用连线连接多个控制器之间的切换关系。


Segue:

     在storyboard中的控制器之间的连线,用来实现页面的跳转切换

     UIKit框架(9)控制器的modal切换方式(二)


两种Segue:自动型、手动型,都是UIStoryboardSegue类型


属性:

@property(nonatomic, readonly) NSString *identifier //在源控制器中所有segue中的唯一标识
@property(nonatomic, readonly) id sourceViewController //源控制器
@property(nonatomic, readonly) id destinationViewController //目的控制器

    UIKit框架(9)控制器的modal切换方式(二)

     

  • 自动型Segue的使用

点击某个控件后(如按钮),自动执行Segue,完成界面的跳转。

在storyboard中按住Control,直接从控件拖线到目的控制器:

     UIKit框架(9)控制器的modal切换方式(二)

     segue类型选择presentation


  • 手动型Segue的使用

1)按住control,从源控制器拖线到目标控制器。

     UIKit框架(9)控制器的modal切换方式(二)

2)手动型Segue需要指定一个标识

     UIKit框架(9)控制器的modal切换方式(二)

3)通过代码执行Segue,即执行跳转动作

     UIViewController的执行Segue的方法:(源控制器调用)

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender

     identifier参数:Segue的ID

     sender参数:任意对象,可传nil

     

  • 值的传递

正向传递:

     由于在跳转前不能获取segue对象的源控制,所以值的传递不能在performSegueWithIdentifier:前

     跳转前,源控制器会自动调用prepareForSegue:方法,重写该方法实现值的传递

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

     通过segue参数的identifier属性能够判断是哪个segue在执行

     通过segue参数的destinationViewController属性能够获得目的控制器

     仍然通过目的控制器添加属性,进行数据的传递,

    如:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ( [segue.identifier isEqualToString:@"pageOne2PageTwo"]) {
        AMViewControllerTwo * vc = segue.destinationViewController;
        vc.str = @"这是源控制器AMViewControllerOne给你的数据";
    }
}


逆向传递:

    仍然使用代理设计模式,与代码切换的逆向传值方式相同


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI