当使用 view.window?.rootViewController 根据 if 语句更改视图时,嵌入式控制器不会被激活
Posted
技术标签:
【中文标题】当使用 view.window?.rootViewController 根据 if 语句更改视图时,嵌入式控制器不会被激活【英文标题】:When using view.window?.rootViewController to change the view based on an if statement, the embedded controllers are not activated 【发布时间】:2020-04-30 14:52:18 【问题描述】:所以我有一个具有 2 个结果的 if 语句,rootViewController
变为 loginViewController
或 mainSearchViewController
。 mainSearchViewController
的情节提要有一个嵌入的 TabViewController
和一个 NavigationViewController
。但是,通过设置根视图控制器,我无法访问TabViewController
和NavigationViewController
,并且只有mainSearchViewController
处于活动状态。这是我的代码:
func setRootViewController()
if Auth.auth().currentUser != nil
let mainSearchViewController = storyboard?.instantiateViewController(withIdentifier: Constants.Storyboard.mainSearchViewController)
view.window?.rootViewController = mainSearchViewController
view.window?.makeKeyAndVisible()
else
let loginSearchViewController = storyboard?.instantiateViewController(withIdentifier: Constants.Storyboard.loginViewController)
view.window?.rootViewController = loginSearchViewController
view.window?.makeKeyAndVisible()
将根视图控制器设置为最右侧的视图时,无法访问标签栏控制器和导航控制器
编辑:我尝试将rootViewController
设置为选项卡控制器,这允许我使用选项卡功能,但我仍然无法访问导航控制器。导航控制器也是如此,当它是根视图控制器但没有选项卡控制器功能时它可以工作
编辑2:在mainSearchViewController
navigationController?.isNavigationBarHidden = false`的viewDidLoad()
中,我将根视图控制器作为标签栏控制器。我可以访问选项卡图标,也可以看到导航栏,但是点击单元格时的导航功能不起作用。
【问题讨论】:
【参考方案1】:更改 rootViewController 可能会导致您的问题,因为 tabViewController 可能没有 loginViewController 作为选项卡。
如果您需要基于 if 语句显示 loginViewController,最好使用以下内容显示它:
navViewController.pushViewController(loginViewController, animated: true
)
【讨论】:
哦,好的。当我这样做时,我可以访问导航控制器的功能,但是在“主搜索控制器”上,后退按钮是可见的,当我按下它时,它会返回到相同的视图,没有后退按钮。我只是放了'navViewController.navigationBar.isHidden = true',它现在可以工作了。谢谢 乐于助人,@equ1nox!以上是关于当使用 view.window?.rootViewController 根据 if 语句更改视图时,嵌入式控制器不会被激活的主要内容,如果未能解决你的问题,请参考以下文章
Spritekit 回到 rootViewController
SplitViewController - 可以更改 rootview 和 detailview 的 z 顺序吗?
swift3:如何将 xib 呈现给 viewcontroller
iPad:在 RootView 中合并 SplitViewController 和 NavigationController 的概念?