WatchOS:通过“下一页”segue在两个控制器之间传递数据

3
我正在使用WKInterfaceController.reloadRootControllers与上下文加载3个接口控制器,一切都运行正常。但是,在滑动页面1到页面2时,我需要传递数据。似乎没有可编程使用的segue来创建新的上下文或以其他方式传递数据。我该如何解决这个问题?我不想为此创建单例。我知道如何在其他segue中传递上下文数据,但这个问题特别涉及到Watchkit上的“下一页”导航。迄今为止,我还没有找到答案。谢谢!Markus

2个回答

1

你是否尝试在你的第一页使用contextForSegue?

override func contextForSegue(withIdentifier segueIdentifier: String) -> Any? {
    let myDate = "today"
    return myDate
}

这仅适用于推送或模态转场。如果您正在使用基于页面的导航,则不会调用contextForSegue。我有同样的问题,但尚未找到任何解决方案,因此我通过使用ExtensionDelegate来解决它。 - fbitterlich

0

我一直在寻找这个问题的答案..

NextPage Segue类似于iOS中的UIPageViewController。我已经尝试了contextForSegue(withIdentifier segueIdentifier: String),但它在滑动时不会被调用,并且你无法在故事板中给这个segue一个identifier

对我来说唯一的解决办法是使用NotificationCenter

在第一个InterfaceController中,我使用willDisappear/didDeactivate发布一个带有对象的通知,在第二个InterfaceController中我订阅了它。

NotificationCenter.default.post(name: Notification.Name("interface1WillDisappear"), object: context)

NotificationCenter.default.addObserver(self, selector: #selector(awake(withNotification:)), name: Notification.Name("interface1WillDisappear"), object: nil)

添加了这个函数

func awake(withNotification notification: Notification) {
  guard let context = context as? MyContextObject else { return }
  print(context)
}

最后别忘了移除观察者。
deinit {
  NotificationCenter.default.removeObserver(self)
}

希望这能帮到你!


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