美文网首页
七、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