我的WatchApp中有3个InterfaceControllers:
如果用户触摸按钮,应用程序将在StartInterfaceController中启动并导航到“Target1”InterfaceController。
按下“Target1”中的按钮InterfaceController我想以编程方式导航回“开始”,然后打开“Target2”
我试过这段代码:
在“Target1”中:
@IBAction func navigateToTarget2() {
navigateBack = true // navigateBack is a global variable
popToRootController()
}
在“开始”中:
override func didAppear() {
if navigateBack {
navigateBack = false
pushController(withName: "Target2", context: nil)
}
}
第一部分运作良好。按“Target”中的按钮导航回“Start”。启动代码已执行(我已在调试器中检查过)但导航到“Target2”无法正常工作。我还在pushController操作中检查了目标的名称。它的名称正确。
答案 0 :(得分:1)
push和pop的组合不会一次完成。
或者,你可以做的是按下按钮"开始"转到" Target1"通过推动"开始"控制器与零上下文。当您按下" Target1"上的按钮时控制器,您可以调用reloadRootControllersWithNames
并在那里传递一些上下文,并创建一个条件来自" Target1"按钮,然后导航到" Target2"。
示例:它不是实际代码。
class StartVC: WKInterfaceController {
func buttonAction() {
self.push("TargetOneVC", context: nil)
}
}
class TargetOneVC: WKInterfaceController {
func buttonAction() {
WKInterfaceController.reloadRootControllersWithNames(["TargetTwoVC"],
contexts: [isFromTargetOne: true])
}
}
class TargetTwoVC: WKInterfaceController {
}