如何创建基于页面的 WatchKit 应用程序?
Posted
技术标签:
【中文标题】如何创建基于页面的 WatchKit 应用程序?【英文标题】:How to create a page based WatchKit app? 【发布时间】:2015-03-08 22:39:29 【问题描述】:我正在尝试创建一个基于页面的 WatchKit 应用。当应用程序加载时,我希望在分页视图中有一个带有图像和按钮的页面,并且滑动应该在图像数组之间切换。
https://www.dropbox.com/s/yn3tstngx8h94xo/ios%20Simulator%20Screen%20Shot%20-%20Apple%20Watch%2009-Mar-2015%203.28.01%20am.png?dl=0
我试过WKInterfaceController.reloadRootControllersWithNames(["home", "home", "home", "home", "home"], contexts: ["1", "2", "3", "4", "5"])
,其中home
是InterfaceController 的标识符。我从另一个 InterfaceController 调用此方法,它是初始接口控制器。我得到基于页面的视图,但初始视图是空白的。
import WatchKit
import Foundation
class InterfaceController: WKInterfaceController
override func awakeWithContext(context: AnyObject?)
super.awakeWithContext(context)
WKInterfaceController.reloadRootControllersWithNames(["home", "home", "home", "home", "home"], contexts: ["1", "2", "3", "4", "5"])
override func willActivate()
// This method is called when watch view controller is about to be visible to user
super.willActivate()
override func didDeactivate()
// This method is called when watch view controller is no longer visible
super.didDeactivate()
-
使用
reloadRootControllersWithNames
方法创建基于页面的应用程序是否正确?
我应该在哪里调用这个方法?
除了情节提要中的箭头之外,是否有类似 AppDelegate
的 WatchKit 入口点文件?
我可以在情节提要本身中配置分页视图而不编写单独的代码吗?
现在我的整个视图都是分页的。我只想改变图像,我不希望按钮移动。我怎样才能做到这一点?
http://www.apple.com/watch/films/#film-fitness 请查看此视频。我想要他们在 02:17 在这里显示的分页。
最后一件事是他们所做的动画。他们为文本和练习环显示的动画。如果有人能告诉我如何制作这样的动画,我将不胜感激。 :)
【问题讨论】:
你不应该同时在 Objective c 和 swift 中编码,选择其中一个标签:) @penne12 我只是想让更多人看到我的问题,我认为 Objective-c 标签会有所帮助;)我的 Parent 应用程序是用 Objective-C 编写的。对于 WatchKit 扩展,我应该更喜欢 Objective-C 还是 Swift? 你最喜欢什么 :) 我认为是 Swift,但你应该探索你的选择 :) 【参考方案1】:只回答问题 1:
我创建了一个基于页面的应用程序,使用的技术几乎与您在此处使用的技术完全相同,只是我调用了 WKInterfaceController.reloadRootControllersWithNames() 来自 willActivate() 函数,而不是 awakeWithContext() 函数。不确定这是否重要。
我假设“home”是不同 WKInterfaceController 的标识符?如果您尝试将起始界面控制器用作分页界面控制器,我认为它不会正常工作。所以这可能是你问题的根源。
但是,仅当您拥有可变数量的页面时,才需要这种以编程方式指定页面的方法。如果您在构建时知道您的页面布局,则可以将它们全部放在情节提要中,然后按住 Control 并拖动另一个,选择“下一页”关系。
如果您使用情节提要执行此操作,则可以将起始界面控制器作为页面的第一个,然后后续界面控制器可以根据需要使用相同的类。
【讨论】:
感谢您的回答:)。我实际上已经在“awakeWithContext”方法中实现了它。我只是想重用视图,因为所有分页视图的布局都是相同的,只是数据发生了变化。我想我现在已经完成了 UI 和动画。但是Watch和iPhone之间的数据传输是我现在需要实现的。我一直在检查 Apple 的 Lister 应用程序。 developer.apple.com/library/ios/samplecode/Lister/Introduction/…希望我能尽快解决这个问题。请分享您对如何在 Watch 和 iPhone 之间进行有效通信的想法。 查看这篇文章:fiveminutewatchkit.com/blog/2015/3/11/…【参考方案2】:#2 和#3 的答案很简单:你不能,至少在当前版本的 WatchKit 中不能。
【讨论】:
锻炼环可以使用图像动画来完成。不确定文字动画是否可行。 您可以在来自苹果developer.apple.com/library/ios/samplecode/Lister/Introduction/…的示例代码中看到动画环的示例实现。以上是关于如何创建基于页面的 WatchKit 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章