UIPageViewController subviewcontroller无法在viewDidAppear上执行segue

问题描述 投票:0回答:2

我有一个UIPageController,其中包含两个subviewcontrollers。开始时,我试图在未授权用户的情况下从SubViewControllerOne到LoginViewController执行隔离。我在viewDidAppear中有一个问题,如下所示:

performSegue(withIdentifier: "authorizeSegue", sender: self);

这将导致失败的segue和警告

Warning: Attempt to present <Volley.LoginViewController: 0x7f98bd801e00> on <Volley.SubViewControllerOne: 0x7f98bd608400> whose view is not in the window hierarchy!

过去我已经成功地使用ViewControllers和TabBarViewControllers完成了此操作。

[当我将计时器包装在计时器中,或通过IBAction触发时,该计时器工作正常。我相信这与PageViewController有关。

class PageViewController: UIPageViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate, UIScrollViewDelegate {

    var subViewControllers = [UIViewController]()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.delegate = self
        self.dataSource = self
        self.edgesForExtendedLayout = [];
        // Do any additional setup after loading the view.

        let subViewControllerOne = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SubViewControllerOne") as! SubViewControllerOne
        let subViewControllerTwo = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SubViewControllerTwo") as! SubViewControllerTwo
        subViewControllers = [yourPodcastViewController, appearancesViewController]
        setViewControllers([subViewControllers[0]], direction: .forward, animated: true, completion: nil)
    }

    required init?(coder: NSCoder) {
        super.init(transitionStyle: .scroll, navigationOrientation: .horizontal, options: nil)
    }

导航控制器和PageViewControllerenter image description here

从SubViewControllerOne到LoginViewController的选择enter image description here

ios swift xcode segue
2个回答
0
投票

我认为,由于视图控制器的生命周期,您应该对viewWillApear执行segue操作>


0
投票

[Welp,在通过tableViews上的didSelect运行segue之前,我遇到过这个问题。解决方案是将其包装在主线程中。不知道为什么这是必要的,但是它解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.