ログイン後、最初は下に階層があります
-> MyCoursesViewController
-> CourseInfo UITabBarController
ユーザーがアプリを閉じてから再入力すると、rootViewController は正しい CourseInfo UITabBarController になります。ただし、ユーザーが別のコースを表示する必要がある (コースを終了する) 場合、MyCoursesViewController はスタック上にないため、MyCoursesViewController に「戻る」ことはできません。
AppDelegate で:
if (inCourse) {
let storyboard : UIStoryboard = UIStoryboard(name: “Main”, bundle: nil)
let courseInfoTabController = storyboard.instantiateViewControllerWithIdentifier(“CourseInfo”) as! UITabBarController
self.window?.rootViewController = courseInfoTabController
} else {
let storyboard : UIStoryboard = UIStoryboard(name: “Main”, bundle: nil)
let myCoursesViewController = storyboard.instantiateViewControllerWithIdentifier(“MyCourses”)
self.window?.rootViewController = myCoursesViewController
}
MyCoursesViewController を rootViewController として配置し、コース情報 UITabBarController に自動的に移動して、MyCoursesViewController が戻ってきた (コースを終了した) 場合に備えて階層上にあるようにする方法はありますか?
または、ユーザーがコースを終了した場合 (反撃)、rootViewController を何らかの方法で削除し、新しい rootViewController に置き換えた方がよいでしょうか? もう 1 つのオプションは、rootViewController を置き換えるだけの場合、古いものはメモリから解放されるのでしょうか、それともまだどこかで参照されているのでしょうか?
例えば
CourseInfo UITabBarController は現在まだ rootViewController ですが、新しいものと交換します
let mainStoryBoard = UIStoryboard(name: "Main", bundle: nil)
let myCoursesViewController = mainStoryBoard.instantiateViewControllerWithIdentifier(“MyCourses”) as! ViewController
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.window?.rootViewController = myCoursesViewController