【问题标题】:how to open next page (group page) from button in watchkit如何从 watchkit 中的按钮打开下一页(组页)
【发布时间】:2019-03-02 04:35:54
【问题描述】:

我需要滑动到下一页(page2)我需要的按钮(page1)作为附件image

你能给我建议吗? 谢谢你。

主要代码

//-------------- open group page ---------------//
  WKInterfaceController.reloadRootControllers(
          withNames:["page1","page2"], contexts: ["0","0"],pageIndex:1
        )

page2 代码

//-------------- start workout ----------------//
func startworkOut(){
.......
}

//--------------- stop workout ---------------//

func stopworkOut(){
.......
}

page1 代码

//-------------- 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
}

【问题讨论】:

    标签: xcode swift4 watchkit healthkit


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-08
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 2015-01-20
      • 2014-12-20
      • 2014-12-24
      • 1970-01-01
      相关资源
      最近更新 更多