在我的应用程序中的某个时刻,我需要回到我的主(即主页)ViewController。因此,我需要向后移动到我的导航堆栈,现在已经完成了ViewControllers和NavigationControllers。所以我做了以下几点:
// to dismiss the current VC
self.navigationController?.popViewControllerAnimated(true)
// to go back home
UIApplication.sharedApplication().keyWindow?.rootViewController = homeNC
homeNC是一个全局变量,指向一个NavigationController,其中包含我的主要" home"的故事板实例。视图控制器。
它有效但部分有效。意思是,它确实将我带回了我的家ViewController,但它对触摸和滚动没有反应。没有任何响应,无论是navigationBar按钮还是家庭NC / VC中的TableViewCells。 Xcode没有崩溃,只是坐在那里等待。
我无法弄清楚原因。谁能想到我在这里失踪的东西?
** 编辑 **
也许是因为我在我的主(家)VC中嵌入了一个嵌套的VC。这是代码以及我尝试过的其他内容:
homeNC = self.navigationController!
homeVC = self
let discoverVC: UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("DiscoverVC") as UIViewController
// embed discoverVC in this VC
self.addChildViewController(discoverVC)
self.view.addSubview(discoverVC.view)
discoverVC.didMoveToParentViewController(self)
// store self NC for using it by "thank you" VC to come back to home after payment
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
// navigates back but becomes unresponsive
appDelegate.window?.rootViewController = homeVC
// navigates back but becomes unresponsive
appDelegate.window?.rootViewController = homeNC
我还尝试使用以下内容保存对appdelegate窗口的引用:
// Initialise sideMenu
window = UIWindow(frame: UIScreen.mainScreen().bounds)
let sideMenu = SSASideMenu(contentViewController: UINavigationController(rootViewController: MainViewController()), leftMenuViewController: LeftMenuViewController())
window!.rootViewController = sideMenu
window!.makeKeyAndVisible()
// get a reference to appdelegate's window so that we can navigate back later
mainWindow = window!
但是当我这样做时它又不会导航回来:
appDelegate.window?.rootViewController = mainWindow.rootViewController
答案 0 :(得分:1)
试试这个。我会为你工作。
{1..10}
{1..10}
{1..10}
{1..10}
修改强>
我读出你编辑过的问题。由于 let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.window?.rootViewController = mainVC
问题正在发生。我更新了我的答案,我希望它现在适合你。你必须做两个改变。首先在SSASideMenu
中,将AppDelegate.swift
的属性设为这样:
SSASideMenu
现在您的代码将更改为:
var window: UIWindow?
var sideMenu: SSASideMenu!
现在,如果您想更改视图控制器,则必须更改sideMenu = SSASideMenu(contentViewController: UINavigationController(rootViewController: MainViewController()), leftMenuViewController: LeftMenuViewController())
contentViewController
,如下所示:
SSASideMenu