WatchKit编程指南:Glance--管理你的Glance界面

pockry 2014-11-20 14:54:19 6645

接上篇:Glance开发基础。翻译自苹果官方文档WatchKit Programming Guide: Managing Your Glance Interface

当添加Watch app target到你的Xcode工程当中时,你能指定是否需要一个glance界面。如果你在一开始忘了添加,也能稍后向工程中加入glance。一个glance界面控制器在storyboard中的显示有些不一样的地方,特别是,它有一个Glance入口点对象,就像图片 13-1显示的一样。

图片 13-1 一个拥有glance入口点对象的界面控制器

glance_interface

Glance界面由自定义的WKInterfaceController子类驱动,此子类的实现方式和其他界面控制器类相同。

实现一个Glance界面控制器

Glance界面控制器的具体实现比较简单,因为它唯一的任务是设置glance中的标签和图像内容。所以你的glance基本上只需要实现两种方法:

  • 使用initWithContext:方法来初始化你的glance界面,并且设置标签和图像的初始值。

  • 基于内容的改变,使用willActivate来更新glance。

当glance已经显示给用户后,如需更新,使用NSTimer对象,你也能使用WKInterfaceDateWKInterfaceTimer 类来显示日期和时间信息,以及倒计时或者显示特定时间。

自定义从Glance启动应用

当用户触摸glance,Apple Watch能够启动对应的Watch app。一般来说,启动app将显示它的主界面控制器。如果你想显示一个不同的界面控制器,调用你的glance界面控制器的updateUserActivity:userInfo:方法。

调用updateUserActivity:userInfo:方法将告诉WatchKit来请求启动时需要显示的界面控制器。在启动进程当中,WatchKit调用主界面控制器的actionForUserActivity:context: 方法来找出到底需要显示哪个界面控制器。在你的Watch app的主界面控制器里实现这个方法,并让它返回你需要的界面控制器名称。通过这个方法,你也能提供一个上下文对象,并将它作为参数传递给指定的界面控制器的initWithContext: 方法。

总结一下,为了在触摸glance时启动并显示一个不同的界面控制器,你需要按如下步骤操作:

  • 在glance界面控制器中:

    •   配置glance的initWithContext:willActivate ,这一步和其他情况是相同的。

    •   调用updateUserActivity:userInfo:方法,并且使用userinfo参数来传达你的应用glance的状态。

  • 在你的应用的主界面控制器:

    •   实现actionForUserActivity:context: 方法,使用提供的userinfo字典来确定显示哪个界面控制器,你还应该生成一个上下文对象并将它传递给指定的界面控制器。