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

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

—-> 4.1 弹出Popover代码块三 :


extension XFJHomeViewController {
 @objc private func presentPopSortViewClick() {
  //弹出控制器的位置
  sortsVC.popoverPresentationController?.barButtonItem = sortItem
  //设置背景颜色
  sortsVC.popoverPresentationController?.backgroundColor = UIColor.whiteColor()
  //model出控制器
  presentViewController(sortsVC, animated: true, completion: nil)
  //取消UIBarButtonItem的交互
  setDisabled()
  //设置代理
  sortsVC.popoverPresentationController?.delegate = self
 }
}

八 处理弹出的Popover相关数据(全部由对应的模型来决定)

1 获取xib中的对象并且提供一个快速创建xib的类方法


//左边的tableView
 @IBOutlet weak var leftTableView: UITableView!
 //右边的tableView
 @IBOutlet weak var rightTableView: UITableView!
 //模型分类数据
 var categories : [XFJCategories]?
 //地区模块的数据
 var DistrictData : [XFJDistrict]?
 //定义一个属性,用来记录用户点击了左侧的哪一行
 var seletIndex : Int?

 //快速创建xib的类方法
 class func lrTableView() ->XFJLRTableView {
  return NSBundle.mainBundle().loadNibNamed("XFJLRTableView", owner: nil, options: nil).last as! XFJLRTableView
 }
 //分类的子数据
 private var subData : [String]?

2 通过在xib中设置代理和数据源实现有关数据源方法

—-> 2.1 数据源方法一 : cell的个数


//MARK: - 数据源方法
extension XFJLRTableView : UITableViewDataSource {
 //cell的个数
 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  //判断是左边还是右边
  if tableView == leftTableView { //左边
   return (delegateSource?.numberOfRowsInLeft(self))!
  }else{ //右边
   return subData?.count ?? 0
  }
 }

—-> 2.2 数据源方法二 : cell的内容

 


 //cell的内容
 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
  //创建cell
  var cell = UITableViewCell?()
  //判断
  if tableView == leftTableView {
   //创建自定义cell
   cell = XFJLeftViewCell.leftViewCell(tableView)
   //设置文字
   cell?.textLabel?.text = delegateSource?.lrTableView(titleDataSource: indexPath.row)
   //设置头像(平常图)--注意 :lrTableViewWithNormalImageInLeft千万要注意大小写
   if delegate?.respondsToSelector("lrTableViewWithNormalImageInLeft:") == true {
    cell?.imageView?.image = UIImage(named: (delegateSource?.lrTableView!(normalImageInLeft: indexPath.row))!)
   }

   //设置头像(高亮图)--注意 :lrTableViewWithHighlightImageLeft千万要注意大小写
   if delegate?.respondsToSelector("lrTableViewWithHighlightImageLeft:") == true {
    cell?.imageView?.highlightedImage = UIImage(named: (delegateSource?.lrTableView!(highlightImageLeft: indexPath.row))!)
   }

  }else{
   cell = XFJRightViewCell.righViewCell(tableView)
   //设置内容
   cell?.textLabel?.text = subData![indexPath.row]
  }
  return cell!
 }