关闭模态呈现的视图控制器后切换标签栏控制器视图控制器
Posted
技术标签:
【中文标题】关闭模态呈现的视图控制器后切换标签栏控制器视图控制器【英文标题】:Switch tab bar controller view controller after dismissing a modally presented view controller 【发布时间】:2020-08-15 12:59:47 【问题描述】:在我的项目中,您可以从模态视图创建帖子。
当模式视图被关闭(用户按下保存帖子)时,我想将标签栏控制器切换到第二个标签(帖子提要屏幕)。
这个话题与我的问题类似。唯一的区别是这是从模态视图中呈现的。我不知道如何在我的代码中实现它(标签栏为零) Switch tab bar programmatically in Swift
我添加了 3 张图片以使这个问题更清楚
code screenshot
console message
@objc func saveAction(sender: UIButton)
print ("> save pressed")
print(presentingViewController?.tabBarController)
print(presentingViewController)
presentingViewController?.tabBarController?.selectedIndex = 1
dismiss(animated: true)
编辑:抱歉堆栈溢出不允许我添加图像
【问题讨论】:
【参考方案1】:您可以使用委托模式来做到这一点。但是如果您不想为此添加委托,您可以如下所示进行;
你可以通过改变tabBarController
的selectedIndex
属性来切换标签栏
if let presenter = presentingViewController as? LibraryViewController
presenter.tabBarController?.selectedIndex = 1
dismiss(animated: true)
如果您在标签栏中的导航控制器上显示模式,请使用:
if let tabBar = presentingViewController as? UITabBarController
tabBar.selectedIndex = 1
dismiss(animated: true)
【讨论】:
你好吉廷!感谢您的快速答复。但我已经尝试过了。问题似乎是在模式视图中标签栏返回 nil。我已经用更好的细节和我的代码编辑了这篇文章。 您能展示一下您是如何呈现模态视图控制器的吗?您使用的是self.present
还是self.navigationController.present
?
在标签栏控制器的 Tab[0] 中,我有一个方法“self.navigationController?.present(view, animated: true, completion: nil)”
我试过了,但似乎没有调用 if 语句中的代码
自从您在导航控制器上进行演示后,我再次更新了答案。无需使用if let
。以上是关于关闭模态呈现的视图控制器后切换标签栏控制器视图控制器的主要内容,如果未能解决你的问题,请参考以下文章