Запустите приложение Watch в среднем виде

По сути, мое приложение выложено в формате страницы, и я хотел бы, чтобы оно запускалось в середине трех страниц. Невозможно установить переход на предыдущую страницу, поэтому я пытался сделать это в коде.

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

Вот два способа, которые я пробовал:

    if segueCheck == true {
        self.pushControllerWithName("budget", context: self)
        self.presentControllerWithName("budget", context: self)
        segueCheck = false
    }

Первый представляет вид, но как совершенно отдельный вид, а второй заменяет первый вид средним видом.

Кто-нибудь знает, как я могу запустить средний вид и позволить пользователю прокручивать его влево и вправо?

Спасибо.


person user3746428    schedule 24.11.2014    source источник


Ответы (3)


WKInterfaceController becomeCurrentPage() должно быть тем, что вы ищете.

Давайте создадим новый класс для контроллера центрального вида, CenterPageViewController, и изменим его метод initWithContext: следующим образом.

import WatchKit

class CenterPageViewController: WKInterfaceController {

    override init(context: AnyObject?) {
        super.init(context: context)

        super.becomeCurrentPage()        
    }
} 

Теперь давайте установим пользовательский класс для средней страницы вашей раскадровки на CenterPageViewController.

введите здесь описание изображения

и, наконец, нажмите бег.

Вы не сможете избавиться от начального перехода с левой страницы на центральную, но приложение, наконец, начнется со средней страницы.

person Tomas Camin    schedule 24.11.2014
comment
Без анимации все равно никак не обойтись? - person Georg; 24.05.2017

Обновите Swift 3.0

class CenterPageViewController: WKInterfaceController {

override init (){
    super.init()
    super.becomeCurrentPage()
  }
}

Это сработает...!!!

Спасибо

person Harjot Singh    schedule 08.08.2017
comment
Вы хотели бы переместить это в awake(withContext context: Any?). - person Jereme; 25.09.2017
comment
А как насчет удаления анимации с первой на вторую страницу? Приложение Apple Workout ведет себя именно так, но без анимации. - person Tap Forms; 06.03.2019

Новый способ сделать это в watchOS 4 и выше:

WKInterfaceController.reloadRootPageControllers(withNames: 
["Controller1" "Controller2", "Controller3"], 
 contexts: [context1, context2, context3],
 orientation: WKPageOrientation.horizontal,
 pageIndex: 1)

Теперь вы не получаете раздражающую анимацию при использовании becomeCurrentPage(), когда вы хотите начать со средней страницы.

person Tap Forms    schedule 08.03.2019
comment
Вам также нужно добавить этот код в Controller1 и Controller3 с правильным индексом страницы (0,2 соответственно)? Или достаточно просто добавить его в Controller2 с индексом страницы 1? - person 39fredy; 23.10.2019
comment
Я добавляю его везде, где мне это нужно в приложении. Это похоже на iOS, где вы нажимаете представление на UINavigationController, за исключением того, что в этом случае вы можете установить несколько страниц контроллеров и решить, какую из них показать. Затем, когда вы проведете пальцем вправо или влево, отобразятся два других ваших контроллера. - person Tap Forms; 31.10.2019