AppleWatch开发入门三——代码交互与控制器生命周期

AppleWatch开发入门三——代码交互与控制器生命周期

一、引言

        在前两篇博客中,讨论了关于watch开发中框架与界面布局相关,然而主要的逻辑,终究还是要通过代码来实现的,在我们创建了项目之后,就会生成InterfaceController这个文件,它就是我们storyBoard中的入口视图控制器。

二、代码交互与控制器声明周期

        storyBoard中的控件我们可以通过拖拽的方式关联到文件中,Action和Outlet两种关联方式基本可以达到我们修改控件和处理业务逻辑的需求。

        WKInterfaceController类似于iOS中的ViewController,是watch中主要用于展示界面的controller,我们的控件也都是基于这个容器中显示。在模板中,系统为我们提供了三个函数,这三个函数体现了watch一个界面的声明周期,如下:

    //这个函数在初始化界面时会触发,通过context可以实现界面的传值
    override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)
    
    }
    //这个函数在界面即将展现时触发 类似于iOS中的ViewWillApear
    override func willActivate() {
        // This method is called when watch view controller is about to be visible to user
        super.willActivate()
    }
    //这个函数在界面消失后触发,类似于iOS中的ViewDidDisAppear
    override func didDeactivate() {
        // This method is called when watch view controller is no longer visible
        super.didDeactivate()
    }

三、watch中的界面跳转与传值

        与iOS类似,watchOS的界面跳转也有两种方式:model和push。同样,我们也可以通过storyBoard或者代码来进行跳转。

1、通过代码跳转与传值

        我们创建两个InterfaceController,界面如下:

通过代码跳转,我们需要给第二个controller设置一个id标识符:

在按钮触发的方法中,如下跳转:

 @IBAction func `switch`(value: Bool) {
         //这里的context是传值的上下文
         //在awakeWithContext方法中会将这个值取到
        pushControllerWithName("InterfaceControllerTwo", context: "我是传的值")
    }

2、在storyBoard中设置跳转关系

        我们也可以直接在storyBoard中设置界面的跳转,按住control,拖拽按钮到要跳转的controller,会出现push和model菜单,选择后,当我们触发按钮方法时,就会跳转:

通过这种方式进行的跳转,在执行跳转之前,会执行如下这个函数:

override func contextForSegueWithIdentifier(segueIdentifier: String) -> AnyObject? {
        return "我是值"
    }

这个设置的返回值就是context上下文传递的值。

专注技术,热爱生活,交流技术,也做朋友。 ——珲少 QQ群:203317592

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏DT乱“码”

微信小程序开发指引

官方文档教程1:http://bcoder.cn/wxopen/ 官方文档教程2:http://bing.aliaii.com/wxopen/  本文档将带你一...

47110
来自专栏landv

如何破解Excel VBA密码

首先,如果文件格式是(.xslm),需要先打开Excel文件,另存为2003版格式(.xls)。

1.2K2
来自专栏张善友的专栏

Remoting: Server encountered an internal error

发生这个错误的原因是Remoting的一个配置项: <customErrors> 元素   指示此应用程序域中的服务器通道是否将经筛选的或完整的异常信息返回给本...

1907
来自专栏你不就像风一样

Maven报错Archive for required library:某.jar' in project '项目名'

741
来自专栏CodingBlock

Android查缺补漏(View篇)--布局文件中的“@+id”和“@id”有什么区别?

但需要注意的是在布局文件中,被引用的id要在引用位置的上面,否则会编译出错,如下:

1264
来自专栏py+selenium

py+selenium IE 定位到元素,但点击不了元素的问题【已解决】

 参考:https://www.cnblogs.com/gihyuqinqin/p/8067685.html

4512
来自专栏地方网络工作室的专栏

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(四)调整 App.vue 和 router 路由

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(四)调整 App.vue 和 router 路由 前情回顾 在上一篇《V...

2319
来自专栏我的博客

express4.2获取参数和视图

1.获取参数 router.get('/', function(req, res) { //console.log(req.query.a); //get a...

3125
来自专栏魏艾斯博客www.vpsss.net

WDCP 面板安装微擎的过程记录

现在最流行的微信管理系统非微擎莫属了,太多人使用微擎来管理自己的微信公众号和微信小程序。同时很多人自行搭建微擎程序时候遇到了难题,为了解决这个难题魏艾斯博客前面...

2900
来自专栏闻道于事

layui动态设置下拉框数据,根据后台数据设置选中

追加下拉框数据: 设置默认选中: 正常的判断这种情况是不行的,因为追加出的数据,在前台显示的并不是同一个下拉框,原来的下拉框被隐藏了 因此需要:根据原来的位置,...

70710

扫码关注云+社区

领取腾讯云代金券