设置rootViewController然后以编程方式导航到下一个视图

时间:2016-07-03 17:32:45

标签: ios swift uistoryboard rootviewcontroller

最初我登录后有一个层次结构

-> MyCoursesViewController
 -> CourseInfo UITabBarController

如果用户关闭应用程序,然后重新进入,则rootViewController将是CourseInfo UITabBarController,这是正确的。但是,当用户需要查看不同的课程(退出课程)时,他们无法“返回”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?另一个选择是,如果我们只是替换rootViewController,旧的是从内存中释放还是仍在某处引用?

e.g。

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 

1 个答案:

答案 0 :(得分:1)

在AppDelegate中,您可以设置层次结构。尝试使用类似的东西:

typedef size_t size_type;