首页 > 解决方案 > 如何从 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
}

标签: xcodeswift4watchkithealthkit

解决方案


这两个控制器都需要相互交谈。
有几种方法,但我会使用一个通用的类对象。

将控制器视为仅显示信息和发送交互事件的愚蠢视图(想想 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只是关于如何进行的一个想法。它肯定应该包含您想要显示的其他内容,例如心率和距离。
祝你好运


推荐阅读