我的iOS应用程序(Xcode11.5)有一个呈现UINavigationController的视图控制器(类FirstViewController的实例)。UINavigationController推送两个视图控制器(类SecondViewController和ThirdViewController的实例)。ThirdViewController有一个UIButton,它成功地将我带回了FirstViewController:
@objc func buttonPressed(_ sender: UIButton) {
assert(navigationController?.viewControllers.count == 2);
performSegue(withIdentifier: "backToFirstViewController", sender: sender);
}我用Interface Builder创建了这个段。有没有一种方法可以在Swift中完全返回到FirstViewController,而不必使用通过接口构建器创建的段?提前谢谢你。
发布于 2020-06-12 09:05:10
您可以在没有故事板的情况下以编程方式完成此任务。
@objc func buttonPressed(_ sender: UIButton) {
navigationController?.popToRootViewController(animated: true)
}发布于 2020-06-12 20:45:41
您可以尝试如下所示:
extension UINavigationController {
func goBackTo<TargetViewController:UIViewController>(targetViewController:TargetViewController.Type) {
let allViewController: [UIViewController] = self.viewControllers as [UIViewController]
for aviewcontroller : UIViewController in allViewController {
if aviewcontroller.isKind(of: targetViewController) {
self.popToViewController(aviewcontroller, animated: true)
break
}
}
}
}你应该可以这样调用它:
self.navigationController!.goBackTo(targetViewController: MyViewController.self)https://stackoverflow.com/questions/62335802
复制相似问题