swift项目-模仿团购(主界面的搭建,以及首页的一些细节)

以前学习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)

    }

    

}

控制器中就是简单的遵守协议,实现方法,将自己设置成代理方就行了

原文地址:https://www.cnblogs.com/mudy/p/4836891.html