【问题标题】:How can I set the initial controller on storyboard contains WKInterfaceController programmatically?如何以编程方式设置情节提要上包含 WKInterfaceController 的初始控制器?
【发布时间】:2015-04-30 10:18:38
【问题描述】:

我希望 Watch 应用故事板上有几个视图控制器。问题是我想根据我正在构建的目标加载不同的初始视图控制器。

我可以看到 WKInterfaceController 上有一个名为“初始控制器”的值,但我找不到以编程方式设置初始视图的方法。我尝试使用提供的其他方法,但所有方法都将第二个视图推到原始初始的顶部,这不是我想要的(顶部栏上有一个后退按钮)。

如果您有任何方式可以考虑支持这一点,那就太好了。创建不同的故事板文件是最后的选择。

【问题讨论】:

  • 初始视图控制器标志只是故事板文件中的一个条目。你不能在运行时设置它。
  • @Paulw11 我明白了,但是有什么方法可以设置初始的 WKViewController 吗?

标签: ios xcode6 watchkit


【解决方案1】:

实际上,解决方案非常简单。确实,这些页面是在我必须在运行时重新构建所有页面之前构建的。更多的是标志(是初始控制器)无法在运行时更改,但您肯定可以从头开始构建。

我将 WKViewController 的标识符设置为“exampleViewControllerName”(在 StoryBoard 上)并将此代码添加到 awakeWithContext:context

NSArray *array1=[[NSArray alloc] initWithObjects:@"exampleViewControllerName", nil];
[WKInterfaceController reloadRootControllersWithNames:array1 contexts:nil];

您当然可以使用上下文并使其变得更复杂,但这是它的基本原理,并且足以提供最简单的答案。

【讨论】:

    【解决方案2】:

    您实际上要问的是如何控制手表套件应用程序的初始视图控制器。

    来自Apple Watch Programming Guide

    基于页面的界面中的所有界面控制器都已创建并 在显示界面之前初始化,但只有一个界面 一次显示控制器。通常,WatchKit 会显示 最初是序列中的第一个接口控制器。要更改 最初显示的界面控制器,调用becomeCurrentPage 方法来自其initawakeWithContext: 方法。

    如果您使用的是分层界面而不是基于页面的界面,那么您的应用将始终以相同的初始视图开始。

    【讨论】:

      猜你喜欢
      • 2019-03-08
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 1970-01-01
      相关资源
      最近更新 更多