学习如何使用Swift写项目
一.搭建微博项目的主框架
1.1--搭建功能模块
1.2--在 AppDelegate
中的 didFinishLaunchingWithOptions
函数,设置启动控制器
import UIKit
import CoreData
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
//创建Window
window = UIWindow(frame: UIScreen.mainScreen().bounds)
window?.backgroundColor = UIColor.whiteColor()
//创建跟控制器
window?.rootViewController = MainViewController()
window?.makeKeyWindow()
return true
}
}
1.3--在MainViewController.swift中添加子控制器
override func viewDidLoad() {
super.viewDidLoad()
//设置当前控制器对应的tabbar的颜色
//注意:在ios7以前如果设置了tintColor志勇文字会变,但图片不会变
tabBar.tintColor = UIColor.orangeColor()
addChildViewController(HomeTableViewController(), title: "首页", imageName: "tabbar_home")
addChildViewController(HomeTableViewController(), title: "消息", imageName: "tabbar_message_center")
addChildViewController(HomeTableViewController(), title: "广场", imageName: "tabbar_discover")
addChildViewController(HomeTableViewController(), title: "我", imageName: "tabbar_profile")
}
/**
初始化子控制器
- parameter childController: 需要初始化的子控制器
- parameter title: 子控制器的标题
- parameter imageName: 子控制器的图片名字
*/
private func addChildViewController(childController: UIViewController, title:String, imageName:String) {
//设置控制器tabar对应的数据
childController.tabBarItem.image = UIImage(named: imageName)
childController.tabBarItem.selectedImage = UIImage(named: imageName + "_highlighted")
childController.title = title
//2.给控制器包装一个导航栏控制器
let nav = UINavigationController()
nav.addChildViewController(childController)
//3.将导航栏控制器添加到当前控制器上
addChildViewController(nav)
}
二.如何动态的创建控制器,在需求中可能遇到---在节假日中修改标签栏按钮的图标,这时就需要动态的创建控制器
2.1在项目中创建一个Json类MainVCSettings.json
[
{
"vcName": "HomeTableViewController",
"title": "首页",
"imageName": "tabbar_home"
},
{
"vcName": "MessageTableViewController",
"title": "消息",
"imageName": "tabbar_message_center"
},
{
"vcName": "DiscoverTableViewController",
"title": "广场",
"imageName": "tabbar_discover"
},
{
"vcName": "ProfileTableViewController",
"title": "我",
"imageName": "tabbar_profile"
}
]
2.1 具体实现代码
override func viewDidLoad() {
super.viewDidLoad()
//设置当前控制器对应的tabbar的颜色
//注意:在ios7以前如果设置了tintColor志勇文字会变,但图片不会变
tabBar.tintColor = UIColor.orangeColor()
//1.获取json文件的路径
let path = NSBundle.mainBundle().pathForResource("MainVCSettings.json", ofType: nil)
//2.通过文件路径创建NSData
if let jsonPath = path{
let jsonData = NSData(contentsOfFile: jsonPath)
do{
//可能发生的异常代码放到这里
//序列话json数据->Array
//Try:发生异常会跳到cat