以前学习oc的时候写的一个团购的项目,现在学习swift,拿来用swift写一遍,也是连猜带蒙的,一点一点的往上凑。
今天主要是把主要的架子搭起来了。
主要有:UITabBarController,UINavigationController,还有navigationItem(这家伙给我搁着坑着了,那个寻思着做出这个效果呢,结果效果出来了,中间的titleview不居中了)
在导航控制器里核心代码:
//初始化所有子视图控制器
func setAllChildVC(){
tabbarAddChindVC(ShouYeTableViewController(), title: "首页", imageName: "设置_16.png", selectedImageName: "设置_16.png")
tabbarAddChindVC(TuanGouTableViewController(), title: "团购", imageName: "设置_18.png", selectedImageName: "设置_18.png")
tabbarAddChindVC(FuJinViewController(), title: "附近", imageName: "首页_03.png", selectedImageName: "首页_03.png")
}
//将以vc作为跟视图的导航控制器,作为UITabBarController的子控制器
func tabbarAddChindVC(vc:UIViewController, title:String,imageName:String,selectedImageName:String){
vc.tabBarItem = UITabBarItem(title: title, image: UIImage(named: imageName), selectedImage: UIImage(named: selectedImageName))
let nav2 = MainNavigationController(rootViewController: vc)
addChildViewController(nav2)
}
关于导航栏颜色以及字号的设置:
self.navigationBar.barTintColor = UIColor.orangeColor()
let navigationTitleAttribute : NSDictionary = NSDictionary(objectsAndKeys: UIColor.blackColor(),NSForegroundColorAttributeName)
self.navigationBar.titleTextAttributes = navigationTitleAttribute as [NSObject : AnyObject]
在首页,主要是一个头视图(而不是分区头,分区头仔设置的时候,需要设置其高度),使用了一个自定义的view,进行按钮的添加,在其xib文件中(这个文件,在创建view的时候,是不让勾选的,只能后来单创建,或者别的什么方法吧,一定要注意根代码关联上,并且在加载的时候,采用
let header = NSBundle.mainBundle().loadNibNamed("headView", owner: self, options: nil).last as! headView
self.tableView.tableHeaderView = header
来进行该视图的加载
)
至于,当点击视图上的按钮的时候,需要将所点击的按钮的事件传给控制器来处理,这个用到了代理(闭包不会用啊,代理还用不好,,不开心)
view中:
import UIKit
protocol headViewDelegate:class{//代表这个代理只能被一个类实现
func clickedAtNum(clicked: Int)
}
class headView: UIView {
weak var delegate: headViewDelegate?
@IBAction func headClick(sender: UIButton) {
var clickTag = delegate?.clickedAtNum(sender.tag)
}
}
控制器中就是简单的遵守协议,实现方法,将自己设置成代理方就行了