xcode - 如何从 watchkit 中的按钮打开下一页(组页)
问题描述
我需要从按钮(page1)作为附加 图像滑动到下一页(page2)
你能给我建议吗?谢谢。
主要代码
//-------------- open group page ---------------//
WKInterfaceController.reloadRootControllers(
withNames:["page1","page2"], contexts: ["0","0"],pageIndex:1
)
第 2 页代码
//-------------- start workout ----------------//
func startworkOut(){
.......
}
//--------------- stop workout ---------------//
func stopworkOut(){
.......
}
第 1 页代码
//-------------- start stop workout --------------//
workoutStatus = false
if(!workoutStatus){
// set value to startworkOut at page 2
workoutStatus = true
}
if(workoutStatus){
// set value to stopworkOut at page 2
workoutStatus = false
}
解决方案
这两个控制器都需要相互交谈。
有几种方法,但我会使用一个通用的类对象。
将控制器视为仅显示信息和发送交互事件的愚蠢视图(想想 MVVM,但我们现在不采用这种模式)。
让真正的锻炼逻辑驻留在您在 2 个控制器之间共享的类对象中。
例子:
class WorkoutManager {
var workoutStarted: Bool = false
func startWorkout() {
workoutStarted = true
//...
}
func stopWorkout() {
workoutStarted = false
//...
}
}
开放组相关代码:
//Common object to be sent to both controllers
let manager = WorkoutManager()
WKInterfaceController.reloadRootControllers(withNamesAndContexts:
[(name: "page1", context: manager as AnyObject),
(name: "page2", context: manager as AnyObject)])
在两个控制器中(非常重要):
var manager: WorkoutManager!
override func awake(withContext context: Any?) {
//...
self.manager = context as! WorkoutManager
//...
}
第1页相关代码:
if(manager.workoutStarted == false) {
manager.startWorkout()
}
else {
manager.stopWorkout()
}
第2页相关代码:
func startworkOut() {
manager.startWorkout()
}
func stopworkOut() {
manager.stopWorkout()
}
这WorkoutManager
只是关于如何进行的一个想法。它肯定应该包含您想要显示的其他内容,例如心率和距离。
祝你好运
推荐阅读
- openmdao - OpenMDAO:如何处理 ExplicitComponent.compute 中的非收敛点?
- firebase - 从 Firebase 到 BigQuery 的实时或每小时数据同步
- ruby - 通过ruby脚本进行mongo查询需要很长时间执行
- php - 从表中选择短划线之间的数据
- asp.net-mvc - 如何在脚本部分调用局部视图
- bash - 用 sed 替换包含反斜杠(\)的单词
- asp.net-core - 使用 ASP.Net Core Web 应用程序设置 Jasmine
- unit-testing - java.lang.AssertionError:预期:
但是是: - angular5 - Angular 6 迁移 PWA 不起作用
- android - 小于 4MB 的即时应用程序