首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式返回到Swift中较早的UIViewController

以编程方式返回到Swift中较早的UIViewController
EN

Stack Overflow用户
提问于 2020-06-12 08:48:40
回答 2查看 56关注 0票数 0

我的iOS应用程序(Xcode11.5)有一个呈现UINavigationController的视图控制器(类FirstViewController的实例)。UINavigationController推送两个视图控制器(类SecondViewController和ThirdViewController的实例)。ThirdViewController有一个UIButton,它成功地将我带回了FirstViewController:

代码语言:javascript
复制
    @objc func buttonPressed(_ sender: UIButton) {
        assert(navigationController?.viewControllers.count == 2);
        performSegue(withIdentifier: "backToFirstViewController", sender: sender);
    }

我用Interface Builder创建了这个段。有没有一种方法可以在Swift中完全返回到FirstViewController,而不必使用通过接口构建器创建的段?提前谢谢你。

EN

回答 2

Stack Overflow用户

发布于 2020-06-12 09:05:10

您可以在没有故事板的情况下以编程方式完成此任务。

代码语言:javascript
复制
@objc func buttonPressed(_ sender: UIButton) {
     navigationController?.popToRootViewController(animated: true)
}
票数 0
EN

Stack Overflow用户

发布于 2020-06-12 20:45:41

您可以尝试如下所示:

代码语言:javascript
复制
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
            }
        }
    }
}

你应该可以这样调用它:

代码语言:javascript
复制
   self.navigationController!.goBackTo(targetViewController: MyViewController.self)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62335802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档