Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何正确关闭模态视图控制器?_Ios_Swift - Fatal编程技术网

Ios 如何正确关闭模态视图控制器?

Ios 如何正确关闭模态视图控制器?,ios,swift,Ios,Swift,在自定义TabBarController中,我为每个选项卡设置NavigationController let viewController = [HomeViewController(), ProfileViewController()] let navControllers = viewControllers.map { return UINavigationController(rootViewController: $0) } setViewControllers(navControll

在自定义TabBarController中,我为每个选项卡设置NavigationController

let viewController = [HomeViewController(), ProfileViewController()]
let navControllers = viewControllers.map { return UINavigationController(rootViewController: $0) }
setViewControllers(navControllers, animated: false)
在我的HomeViewController中,我有一个CollectionView,当选择单元格时,它会将我的VideoPlayerViewController推送到NavigationController。然后,VideoPlayerViewController将ViewController显示为模式:

class PopoverViewController: UIViewController {
    @IBAction func presentPopover() {
        let popoverViewController = PopoverViewController()
        popoverViewController.modalPresentationStyle = .fullScreen
        popoverViewController.delegate = self
        present(popoverViewController, animated: true, completion: nil)
    }
}
在我的PopoverViewController中,我有一个关闭按钮,用于调用VideoPlayerViewController中的委托方法:

class PopoverViewController: UIViewController {
    @objc func closeTapped() {
        delegate?.willClose(self)
    }
}

extension VideoPlayerViewController: PopoverViewControllerDelegate {
    func willClose(_ viewController: PopoverViewController) {
        viewController.dismiss(animated: true, completion: nil)
    }
}
在my PopoverViewController上调用Dismise时,它不仅会取消模式ViewController,还会从NavigationController中弹出VideoPlayerServiceController,并返回rootViewController(HomeViewController)


我想返回到VideoPlayerViewController,只关闭PopoverViewController,而不打开VideoPlayerViewController。

您正在调用VideoPlayerViewController上的关闭。应在PopoverViewController上执行此操作,如下所示:

class PopoverViewController: UIViewController {
    @objc func closeTapped() {
        dismiss(animated: true, completion: nil)
    }
}

尝试在
closeTapped
中关闭
PopoverViewController
。顺便问一下,在选择单元格时,您是显示还是按
videoplayervewcontroller
?@mahan我正在将
videoplayervewcontroller
按到我的
NavigationController
。我尝试在
关闭按钮中直接关闭
PopoverViewController
,但仍然得到相同的结果。在您的代码中,您有
PopoverViewController.modalPresentationStyle=.fullScreen
,大写P,这是一个错误,还是你在类上而不是在实例上设置了它?@jakubkořepa感谢你指出这是一个输入错误,我在代码中正确地使用了它。当这样做时,它也会做同样的事情。它将我带回NavigationController的rootViewController,而不是返回VidePlayerViewController。您可以分享如何显示PopoverViewController的代码吗?在上面,我只是初始化PopoverViewController并使用
present来显示它(popoverViewController,动画:true,完成:nil)
在我的VideoPlayerViewer控制器中