Swift 如何在导航控制器中导航到特定控制器
我试图从故事板导航第二个控制器,但导航栏未显示在控制器上。实际上,我想从应用程序代理中显示控制器 这是我的堆栈: 这是我的密码:Swift 如何在导航控制器中导航到特定控制器,swift,xcode,uiviewcontroller,navigation,storyboard,Swift,Xcode,Uiviewcontroller,Navigation,Storyboard,我试图从故事板导航第二个控制器,但导航栏未显示在控制器上。实际上,我想从应用程序代理中显示控制器 这是我的堆栈: 这是我的密码: let storyboard = UIStoryboard(name: AppStoryboards.MAIN, bundle: Bundle.main) guard let controller = storyboard.instantiateViewController(withIdentifier:
let storyboard = UIStoryboard(name: AppStoryboards.MAIN, bundle: Bundle.main)
guard let controller = storyboard.instantiateViewController(withIdentifier: ViewControllerIdentifiers.THREAD_DETAIL_CONTROLLER) as? ThreadDetailController else {
return
}
controller.threadIdReceivedFromFeed = threadId as? String ?? String()
self.window?.rootViewController = controller
以下是实际结果:
您需要使用添加控制器作为UINavigationController的rootViewController,然后将该navigationController设置为窗口的rootViewController,即
也许这个答案可以帮助你在哪里写这段代码?Bcz我正在从应用程序代理中显示view Controller,因为在navigationStack中没有任何其他东西可以移动。rootViewController是navigationStack中的第一个控制器。好的,现在我必须移动提要屏幕,我应该做什么?请澄清您要创建的流,以及您想要在其中创建的所有控制器。添加问题本身。我知道没有后台堆栈如何移动导航控制器的第一个屏幕,而不是将ThreadDetailController设置为窗口的rootViewController,从FeedViewController中推送它。从要显示ThreadDetailController的位置添加FeedViewController的代码。
let storyboard = UIStoryboard(name: AppStoryboards.MAIN, bundle: nil)
if let controller = storyboard.instantiateViewController(withIdentifier: ViewControllerIdentifiers.THREAD_DETAIL_CONTROLLER) as? ThreadDetailController {
controller.threadIdReceivedFromFeed = (threadId as? String) ?? ""
let navigationController = UINavigationController(rootViewController: controller) //here...
self.window?.rootViewController = navigationController
}