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