鉴于拖拖拽拽这种布局的方式一向是我厌恶的。所以一开始就决定用纯代码的方式写iPhone程序。
第一步:(按网上资料 OK)
1.创建一个工程;
2.删除 stroryboard 文件
3.删除SceneDelegate.swift文件
4.置空工程文件属性中 info属性里面的Main storyboard file base name
5.删除Info.plist文件中的 Main storyboard file base name 项,和 Application Scene Manifest项
6.修改AppDelegate文件,
(6.1)删除后面的两个函数
func application(_application:UIApplication, configurationForConnecting connectingSceneSession:UISceneSession, options:UIScene.ConnectionOptions) ->UISceneConfiguration{
}
func application(_application:UIApplication, didDiscardSceneSessions sceneSessions:Set) {
}
(6.2)在didFinishLaunchingWithOptions函数里面,给定rootViewController
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = your_rootViewController
window?.makeKeyAndVisible()
return true
7.运行OK,没问题
第二步:添加UITabBarController
1.自定义一个UITabBarController的子类HQTabBarViewController
2.自定义几个UIViewController的子类作为标签页
在viewDidLoad()方法里面设置tabBarItem.title, tabBarItem.image,设置其他UI
3.修改AppDelegate的didFinishLaunchingWithOptions方法
let rootViewController =HQTabBarViewController()
rootViewController.viewControllers = [viewController1 ,viewController2, viewController3]
window?.rootViewController= rootViewController
4.运行,tabBarItem不显示!!!!
--------------------------------------------------------------------
第一个遇到的问题是:给UITabBarController添加的TabBarItem首次启动时不显示文字和图片。点击后才会显示。
搜索某度,简直......,大家都知道。
找找stackoverflow吧,有人遇到了和我一样的问题。
------------------------------------------------------------------
原因:
ViewController里的View是个Lazy,不到必要的时候不会加载,
这个和android里的ViewPager预加载不同。因为Lazy,所以没有加载,就不会调用viewDidLoad方法,没有调用viewDidLoad方法,当然就不会显示设置的title和图片了。
解决方法:
知道了原因,解决办法也就有了:把设置图片和title的语句放到AppDelegate的didFinishLaunchingWithOptions方法里面。
运行,一切OK。
网友评论