纯swift实现ipad版简单美团界面功能

2020-01-09 00:06:44王振洲

6 通过给xib拖线,拿到内部属性


//按钮头像
 @IBOutlet weak var iconButton: UIButton!
//头部子标题
 @IBOutlet weak var subtitleLabel: UILabel!
//头部标题
 @IBOutlet weak var title_Label: UILabel!

7 给xib中的属性提供set方法和对应的get方法,方便外边调用修改


//对头部标题提供Set方法
 var title : String? {
  didSet{
   return title_Label.text = title
  }
 }
 //对头部子标题提供set方法
 var subtitle : String? {
  didSet{
   return subtitleLabel.text = subtitle
  }
 }
 //对按钮头像提供set方法(平常的图片)
 var normalName : String? {
  didSet{
   return iconButton.setImage(UIImage(named: normalName!), forState: .Normal)
  }
 }
 //对按钮头像提供set方法(点击后的图片)
 var heightName : String? {
  didSet{
   return iconButton.setImage(UIImage(named: heightName!), forState: .Highlighted)
  }
 }
 //对按钮提供一个get方法
 var getIconButton : UIButton {
  get{
   return iconButton
  }
 }

8 提供一个加载xib的类方法,让外界能通过该方法快速创建xib


//MARK: - 给类扩展一个方法(加载xib)
extension XFJTopView {
 //提供一个快速创建xib的类方法
 class func topView(title : String, subTitle : String, normalImageName : String, heightImageName : String) ->XFJTopView {
  let topView = NSBundle.mainBundle().loadNibNamed("XFJTopView", owner: nil, options: nil).last! as! XFJTopView
  //给属性赋值
  topView.title_Label.text = title
  topView.subtitleLabel.text = subTitle
  topView.iconButton.setImage(UIImage(named: normalImageName), forState: .Normal)
  topView.iconButton.setImage(UIImage(named: heightImageName), forState: .Highlighted)
  //返回通过xib创建的对象
  return topView
 }
}

9 添加顶部的按钮

—-> 9.1 思路 : 通过添加到由导航条管理的item中的数组中来实现对加载xib的时候按钮的添加

—-> 9.2 导航控制器的根控制器

swift,ipad,美团界面

—-> 9.3 XFJHomeViewController类对导航条中的item的管理(该部分代码比较多,我们通过类扩展来实现)


//MARK: - 设置导航条中的item
extension XFJHomeViewController {
 @objc private func setUpTabBarItem() {
  //设置值item的图片(0)
  let logoItem = UIBarButtonItem(image: UIImage(named: "icon_meituan_logo"), style: .Plain, target: nil, action: nil)
  //对导航条最左边的item赋值
  navigationItem.leftBarButtonItem = logoItem
  //取消导航条左边的item点击
  logoItem.enabled = false

  //设置其他的items(一)
  let item1 = XFJTopView.topView("美团", subTitle: "全部分类", normalImageName: "icon_category_-1", heightImageName: "icon_category_highlighted_-1")
  //设置第一个item
  let topItem = UIBarButtonItem(customView: item1)
  //对按钮的监听
  item1.getIconButton.addTarget(self, action: "presentPopTopViewClick", forControlEvents: .TouchUpInside)
  //赋值
  self.topItem = topItem

  //设置items(二)
  let item2 = XFJTopView.topView("广州", subTitle: "全部", normalImageName: "icon_district", heightImageName: "icon_district_highlighted")
  let gzItem = UIBarButtonItem(customView: item2)
  item2.getIconButton.addTarget(self, action: "presentPopGzViewClick", forControlEvents: .TouchUpInside)
  //赋值
  self.gzItem = gzItem

  //设置items(三)
  let item3 = XFJTopView.topView("排序", subTitle: "默认排序", normalImageName: "icon_sort", heightImageName: "icon_sort_highlighted")
  let sortItem = UIBarButtonItem(customView: item3)
  item3.getIconButton.addTarget(self, action: "presentPopSortViewClick", forControlEvents: .TouchUpInside)
  //赋值
  self.sortItem = sortItem
  //将item添加到数组中
  navigationItem.leftBarButtonItems = [logoItem,topItem,gzItem,sortItem]

 }
}