替换WatchKit中的分层导航堆栈中的控制器

时间:2015-05-12 07:30:53

标签: ios objective-c swift watchkit

有没有办法用WatchKit替换导航堆栈中的当前控制器? This question我是如何在我的iPhone应用程序中进行的,但是我找不到用WatchKit复制它的方法。

我正在研究的最接近的替代方案就是弹出它,并以某种方式让控制器知道推动新的控制器。但我还是没想出来。

2 个答案:

答案 0 :(得分:0)

我在第一个接口控制器中定义了bool属性。当我调用第二个接口控制器时,我将此属性设置为true。然后,当我关闭第二个视图控制器时,调用第一个视图控制器的方法willActivate。这是我检查bool属性的地方,如果是真的话,立即弹出第一个接口控制器。

这种方法有效,但它有一个缺点:用户会在短时间内看到第一个视图控制器,然后通过动画消失。

如果有人有更好的想法,我会对此非常感兴趣。

答案 1 :(得分:0)

问题:我们想用接口控制器 B 替换接口控制器 A

这是一个可行的解决方案,适用于我:

让属性 P 成为主( M )接口控制器中的bool

  • M 调用接口控制器 A
  • 要显示 B 而不是 A ,请将 P 设置为true并关闭 A
  • 执行 A 中的方法willActivate。如果 P true,则激活 B 的位置。在激活 B 之前,请将 P 重置为false

一些意见:

  • 使用以下Objective-C或Swift代码显示/激活接口控制器:

    [self presentControllerWithName:@"InterfaceControllerXYZ" context:nil];
    
    self.presentControllerWithName("InterfaceControllerXYZ", context:nil)
    
  • 如果要从 M 激活多个接口控制器,请使用int代替bool告诉 M 要激活哪个接口控制器。

  • 当然,这种方法不仅适用于主界面控制器,而且还可以与层次结构中更深层次的控制器一起使用。