在 AppDelegate 之外,我如何在 UINavigationController 中包含一个 UIViewController,然后再对它执行基本的 `performSegueWIthIden
Posted
技术标签:
【中文标题】在 AppDelegate 之外,我如何在 UINavigationController 中包含一个 UIViewController,然后再对它执行基本的 `performSegueWIthIdentifier`?【英文标题】:Outside of AppDelegate, how do I contain a UIViewController in UINavigationController before I basically `performSegueWIthIdentifier` to it? 【发布时间】:2015-08-25 20:47:19 【问题描述】:我理解 AppDelegate 中的概念。
基本情况如下:
let mainStoryboard: UIStoryboard = UIStoryboard(name: “Main”, bundle: nil)
var mainViewController = mainStoryboard.instantiateViewControllerWithIdentifier(
“MainViewController”) as! UIViewController
var navController = UINavigationController(rootViewController: mainViewController)
self.window?.rootViewController = navController
self.window?.makeKeyAndVisible()
这将成功地使您的 mainViewController 成为 NavigationController 并像这样运行。
我不想在 AppDelegate 中这样做。
我有一个名为 A 的 UIViewController,它不包含在 UINavigationController 中。从 A,我现在要做的是我 performSegueWithIdentifier
到另一个名为 B 的 UIViewController。我想以编程方式使 B 包含在 UINavigationController 中。我不想在情节提要中实现这一点。这必须以编程方式完成。
我想我将不得不使用mainStoryboard.instantiateViewControllerWithIdentifier(...)
来实例化 B,然后将其包装在 A 中某处的 UINavigationController 中(最好是我打算转到 B 的地方)。然后,除了performSegueWithIdentifier
之外,我会以其他方式到达 B?因为如果我执行 segue,那么它不会转到我包裹在 UINavigationController 中的 B。
我希望这不是太复杂,但如果有任何不合理的地方,我可以提供详细信息。
【问题讨论】:
【参考方案1】:除了实际显示新的视图控制器之外,您可以执行此操作的一种方法类似于您在代码示例中的方法。假设您在视图控制器 A 中有一个方法应该显示视图控制器 B,您可能会这样做:
func showViewControllerB()
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let viewControllerB = mainStoryboard.instantiateViewControllerWithIdentifier("ViewControllerB") as! ViewControllerB
let navController = UINavigationController(rootViewController: viewControllerB)
presentViewController(navController, animated: true, completion: nil)
【讨论】:
是的,这绝对是它。我有一种很好的感觉,就是这样,但是......在路上,所以我无法确认:P。谢谢!以上是关于在 AppDelegate 之外,我如何在 UINavigationController 中包含一个 UIViewController,然后再对它执行基本的 `performSegueWIthIden的主要内容,如果未能解决你的问题,请参考以下文章
在 AppDelegate 之外,我如何在 UINavigationController 中包含一个 UIViewController,然后再对它执行基本的 `performSegueWIthIden
iOS:如何在 AppDelegate 之外调用“应用程序 didRegisterForRemoteNotificationsWithDeviceToken”?
除了 AppDelegate 和 UIViewController 之外的一个类中的 GIDSignInDelegate 使用示例,用于 swift 中的 Google 身份验证