将手表应用程序启动到中间视图

8
基本上,我的应用程序是以页面格式布局的,我希望它能够启动到三个页面的中间。没有设置前一页转场的方法,所以我一直在试图在代码中实现它。
我已经将主视图设为第一个视图,并尝试了各种方法来在应用程序启动时转移到中间视图。
以下是我尝试的两种方法:
    if segueCheck == true {
        self.pushControllerWithName("budget", context: self)
        self.presentControllerWithName("budget", context: self)
        segueCheck = false
    }

第一种方法展示了一个视图,但是作为完全独立的视图,而第二种方法用中间视图替换了第一个视图。

有人知道我如何进入中间视图并允许用户在其左右滑动吗?

谢谢。

3个回答

8

WKInterfaceControllerbecomeCurrentPage()方法应该是你要找的。

让我们为中心视图控制器创建一个新类,CenterPageViewController,并将其 initWithContext: 方法更改如下:

import WatchKit

class CenterPageViewController: WKInterfaceController {

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

        super.becomeCurrentPage()        
    }
} 

现在让我们为故事板中间页面设置自定义类CenterPageViewController

enter image description here

最后点击运行。
你将无法消除从左侧页面到中心页面的初始转换,但应用程序最终将开始于中间页面。

还是没有不用动画的方法吗? - Georg

1

更新 Swift 3.0

class CenterPageViewController: WKInterfaceController {

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

这将会工作...!!!

谢谢


你需要将这个代码移动到 awake(withContext context: Any?) 中。 - Jereme
把第一页到第二页的动画去掉怎么样?苹果的Workout应用就是这样运作的,但没有动画。 - Tap Forms

1
在 watchOS 4 及以上版本中,新的做法是:
WKInterfaceController.reloadRootPageControllers(withNames: 
["Controller1" "Controller2", "Controller3"], 
 contexts: [context1, context2, context3],
 orientation: WKPageOrientation.horizontal,
 pageIndex: 1)

现在,当您想从中间页面开始使用becomeCurrentPage()时,不会再出现令人讨厌的动画。

你是否还需要将这段代码添加到 Controller1Controller3 中,并分别设置正确的 pageIndex(分别为0和2)?或者只将其添加到 Controller2 中,pageIndex 为1,就足够了吗? - 39fredy
1
我会在应用程序中需要的任何地方添加它。这就像在iOS上将视图推送到UINavigationController一样,只是在这种情况下,您可以设置多个控制器页面并决定显示哪一个。然后,当您向右或向左滑动时,您的另外两个控制器将显示。 - Tap Forms

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接