使用 swift 在选项卡式应用程序中模态显示和关闭视图

Posted

技术标签:

【中文标题】使用 swift 在选项卡式应用程序中模态显示和关闭视图【英文标题】:Present and dismiss view modally in tabbed application using swift 【发布时间】:2018-09-25 14:49:14 【问题描述】:

我已经创建了一个选项卡式应用程序,并且能够使用下面的代码以模态方式呈现一个视图,但是,我坚持关闭视图并显示选项卡栏和第一个视图控制器。

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let signUpViewController = storyboard.instantiateViewController(withIdentifier:"SignUpViewController") as! SignUpViewController
self.window?.makeKeyAndVisible()
self.window?.rootViewController = signUpViewController

【问题讨论】:

您没有在代码中以模态方式呈现任何内容。你用你的signUpViewController替换你的应用程序中的rootViewController(我猜是标签栏控制器)。 【参考方案1】:

signUpViewController 内部,在 IB 中为 tabBarController 提供故事板标识符后执行此操作

let tab = storyboard!.instantiateViewController(withIdentifier:"tab") 
UIApplication.shared.keyWindow?.rootViewController = tab

(UIApplication.shared.delegate as! AppDelegate).window?.rootViewController = tab

【讨论】:

【参考方案2】:

您应该在标签栏 vc 上展示您的模态 vc

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let signUpViewController = storyboard.instantiateViewController(withIdentifier:"SignUpViewController") as! SignUpViewController
signUpViewController.modalPresentationStyle = UIModalPresentationStyle.fullScreen
signUpViewController.modalTransitionStyle = UIModalTransitionStyle.coverVertical
self.window.rootViewController.present(myModalViewController, animated: true, completion: nil)

(如果 self.window.rootViewController - 你的标签栏视图控制器)

在这种情况下,您可以在模态 vc 中使用 dismiss(animated: true, completion: nil) 方法将其关闭。

【讨论】:

【参考方案3】:

在您的TabBarViewController 中,在呈现SignUpViewController 时执行以下操作

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier:"SignUpViewController")
viewController.modalPresentationStyle = .overFullScreen
self.presentViewController(viewController, animated:true)

在解雇时,只需从SignUpViewController 调用解雇代码

例如dismissViewControllerAnimated

【讨论】:

以上是关于使用 swift 在选项卡式应用程序中模态显示和关闭视图的主要内容,如果未能解决你的问题,请参考以下文章

将核心数据添加到现有的选项卡式应用程序(ios swift、Xcode6)

AppDelegate Swift 中的选项卡式应用程序和核心数据函数

如何在选项卡式布局中显示 Android gridview

在选项卡式 android 程序中显示列表

无法在标签栏控制器的顶部完全呈现模态视图控制器

如何在 Swift 2 中使用 TableView 项目访问视图控制器?