0

ログイン後、最初は下に階層があります

-> 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 
4

1 に答える 1