首先来说一下关于设置启动页面,通常情况下创建一个项目会自动生成一个ViewController和对应的StoryBoard,如果不想通过StoryBoard启动,要在Info.plist中,将Main storyboard file base name的值清理掉(一般为Main,不清理的情况下可以指定其他的storyboard文件名)。
创建一个VC可以通过纯代码创建,也可以通过关联storyboard可视化创建。
这两种方式在代码中是不同的。但都是在AppDelegate中设置的。
AppDelegate中包含了四个方法,对Application的整个生命周期进行管理。
这里主要关注首次启动的生命周期方法,设置启动的VC都是在这进行的。
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
return true
}
通过纯代码设置启动页
let vc = ViewController()
let naviVc = UINavigationController(rootViewController: vc)
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = naviVc
window?.makeKeyAndVisible()
return true
绑定了storyboard的ViewController
let sb = UIStoryboard(name: "Main", bundle: nil)
let vc = sb.instantiateInitialViewController()
let naviVc = UINavigationController(rootViewController: vc!)
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = naviVc
window?.makeKeyAndVisible()
return true
这里要注意,如果storyboard中有多个ViewController,需要对首次启动对VC进行设置,勾选Inherit Module From Target
ViewController之间的跳转
通常通过navigationController即可进行页面跳转:
let vc = ViewController()
self.navigationController?.pushViewController(vc, animated: true)
但是如果你的ViewController绑定了storyboard,就需要通过storyboard来跳转了
let storyboard = self.storyboard
let secondVC = storyboard?.instantiateViewController(withIdentifier: "SecondViewController")
self.navigationController?.pushViewController(secondVC!, animated: true)
网友评论