как открыть следующую страницу (групповую страницу) с помощью кнопки в watchkit - PullRequest
0 голосов
/ 02 марта 2019

Мне нужно перейти на следующую страницу (стр. 2), что мне нужно от кнопки (стр. 1) в приложении изображение

Не могли бы вы посоветовать мне?Спасибо вам.

основной код

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

1 Ответ

0 голосов
/ 02 марта 2019

Оба этих контроллера должны общаться друг с другом.
Есть несколько способов, но я бы пошел с общим объектом класса.

Думайте о контроллерах как о тупых представлениях, которые показывают только информацию иотправлять события взаимодействия (подумайте MVVM, но мы сейчас не берем этот шаблон).
Пусть реальная логика тренировки находится в объекте класса, который вы разделяете между двумя контроллерами.


Пример:

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

Код, связанный с Page 1:

if(manager.workoutStarted == false) {
    manager.startWorkout()
}
else {
    manager.stopWorkout()
}

Код, связанный со страницей 2:

func startworkOut() {
    manager.startWorkout()
}

func stopworkOut() {
    manager.stopWorkout()
}

Этот WorkoutManager является просто идеей о том, как действовать.Он обязательно должен содержать другой контент, который вы хотите показать, например частоту сердечных сокращений и расстояние.
Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...