美文网首页
七、iWatch常用基本用法之分页导航、水平模式、弹出模式、视图

七、iWatch常用基本用法之分页导航、水平模式、弹出模式、视图

作者: Dosun | 来源:发表于2017-03-08 17:19 被阅读784次

    本文要讲述iWatch常用 的分页导航、水平模式、弹出模式、视图间传值,如下将按照其展示讲述。

    一、分页导航

    具体用法:
    在Interface.storyboard中,拖五个控制器,然后在每一控制器中放一个image并加载不同图片。分页导航关键的操作如下图 1.png,按住A控制器箭头处,然后按住control 键向控制器B 拉线,并出现箭头的所指的弹框,选中next page。其他控制器也是参照上面操作。


    1.png

    最终的分页导航的效果如下图(分页导航.gif);


    分页导航.gif
    新需求:

    现在这边产品经理提出新的要求,app启动的时候,指定要看到第二个控制器。
    做法如下,新建一个OLIInterfaceController继承自WKInterfaceController,然后让第二个控制Storyboard的class是OLIInterfaceController,最后写如下代码,大功告成。

    - (void)awakeWithContext:(id)context {
        [super awakeWithContext:context];
     
    //通过此行代码,可以让当前页为第一页。
        [self becomeCurrentPage];
    }
    

    二、控制器模态模式

    0.效果图如下(水平模式.gif);
    控制器模态模式.gif
    1.Interface.storyboard设置

    在2.png图中,A处是设置identifier的,纯代码会用到。


    2.png
    2.纯代码

    第一个控制器,button点击事件。

    #pragma mark - push到第二个控制器
    - (IBAction)pushSecondVC
    {
      //如果不是连线,在storyboard 设置控制器的identifier
        [self presentControllerWithName:@"secondController" context:nil];
    }
    

    第二个控制器,button点击事件。

    #pragma mark - 模态 到第三个控制器
    - (IBAction)pushLastVC {
        //如果不是连线,在storyboard 设置控制器的identifier
     [self presentControllerWithName:@"thirdController" context:nil];
    }
    #pragma mark - 返回到第一个控制器
    - (IBAction)backToRootVC {
        
        //返回到根控制器
       [self dismissController];
        
    }
    

    第三个控制器,button 点击事件

    #pragma mark - 返回到第二个控制器
    - (IBAction)dismiss
    {
        //返回第一个控制器
     [self dismissController];
    }
    

    三、控制器水平模式

    0.效果图如下(弹出模式.gif);
    控制器水平模式.gif
    1.Interface.storyboard设置,请参照 控制器模态模式。
    2.纯代码

    第一个控制器,button点击事件。

    #pragma mark - push到第二个控制器
    - (IBAction)pushSecondVC
    {
        //如果不是连线,在storyboard 设置控制器的identifier,用此方法进行push
        [self pushControllerWithName:@"secondController" context:nil];
    }
    

    第二个控制器,button点击事件。

    #pragma mark - push 到第三个控制器
    - (IBAction)pushLastVC {
        //如果不是连线,在storyboard 设置控制器的identifier,用此方法进行push
        [self pushControllerWithName:@"thirdController" context:nil];
    }
    #pragma mark - 返回到第一个控制器
    - (IBAction)backToRootVC {
        
        //返回到根控制器
        [self popToRootController];
        
    }
    

    第三个控制器,button 点击事件

    #pragma mark - 返回到第二个控制器
    - (IBAction)dismiss
    {
        //返回第一个控制器
        [self popController];
    }
    

    四、水平模式和弹出模式注意点

    1.如果多个控制器的跳转都是用Push,不要用model,这样子会出问题的,亲身体验。
    2.如果多个控制器的跳转是modal,不能用push,同样也会出问题,会把iWatch app 搞晕。

    五、视图间传值

    1.Interface.storyboard设置,如下图
    3.png
    2.纯代码

    第一个控制器,button点击事件,传递数据给第二个控制器。

    - (IBAction)pushSecondVC
    {
        //自定义字典
        NSDictionary *dict = @{@"key":@"value"};
        
        //push controller 顺别传值
        [self pushControllerWithName:@"GDInterfaceController" context:dict];
    }
    

    第二个控制器,接受第一个控制器传来的数据。

    //mark: 从interfaceController 接受传来的值,放在context
    - (void)awakeWithContext:(id)context
    {
        [super awakeWithContext:context];
        
        //打印结果
        NSLog(@"%@",context);
    /*
    打印结果如下:
    2017-03-08 17:12:19.981 控制器的传值 WatchKit Extension[31611:1168877] {
        key = value;
    }*/
        
    }
    

    over!! 本人小白,有足的东西,请帮忙指正,感谢!!
    May maker help us all!!

    相关文章

      网友评论

          本文标题:七、iWatch常用基本用法之分页导航、水平模式、弹出模式、视图

          本文链接:https://www.haomeiwen.com/subject/nimmgttx.html