在写一个小demo的时候发现如果将rootViewController定义在引导页(欢迎页)上时,之前设置的导航栏和tabBar都不能正常显示于是查书查到
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
//先设置欢迎页
let vc = ViewController()
//将欢迎页设置为根视图
self.window?.rootViewController = vc
self.window?.backgroundColor = UIColor.whiteColor()
//调用闭包
vc.startClosure = {
() -> Void in
self.start()
}
}
//闭包所用的方法,用来启动之后的View,并且修改根视图
func start(){
let vc1 = SecondViewController()
let vc2 = ThirdViewController()
let vc3 = FoutViewController()
let vc4 = FifthViewController()
vc1.tabBarItem.title = "1"
vc2.tabBarItem.title = "2"
vc3.tabBarItem.title = "3"
vc4.tabBarItem.title = "4"
let tabber = UITabBarController()
//设置UITabBarController
tabber.viewControllers = [vc1,vc2,vc3,vc4]
//设置UINavigationController的根视图,这里的根视图必须为tabber而不是欢迎页(vc)
let navi = UINavigationController(rootViewController: tabber)
self.window?.rootViewController = navi
}
var startClosure : (() -> Void)?
本文介绍在Swift应用中如何设置引导页并在完成引导后跳转至rootViewController,即一个包含多个子控制器的TabBarController。通过在AppDelegate中创建引导页ViewController,设置其闭包,在闭包中调用start()方法,更新rootViewController为包含多个子控制器的UINavigationController,从而实现从欢迎页到复杂导航结构的平滑过渡。
1222

被折叠的 条评论
为什么被折叠?



