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

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

七 Popover的弹出

1 分别创建三个类来管理弹出的Popover

swift,ipad,美团界面

2 对顶部三个item所弹出的控制做懒加载创建,保证用到的时候在创建

 


//MARK: - 懒加载控制器(一)
 private lazy var categoryVC : XFJCategoryViewController = {
  //创建控制器
  let categoryVC = XFJCategoryViewController()
  //设置控制器的样式
  categoryVC.modalPresentationStyle = .Popover
  //返回控制器
  return categoryVC
 }()
 //MARK: - 懒加载控制器(二)
 private lazy var districtVC : XFJDistrictViewController = {
  //创建控制器
  let districtVC = XFJDistrictViewController()
  //设置控制器的样式
  districtVC.modalPresentationStyle = .Popover
  //返回控制器
  return districtVC
 }()
 //MARK: - 懒加载控制器(三)
 private lazy var sortsVC : XFJSortsViewController = {
  //创建控制器
  let sortsVC = XFJSortsViewController()
  //设置控制器的样式
  sortsVC.modalPresentationStyle = .Popover

  //返回控制器
  return sortsVC
 }()

3 根据弹出的Popover类型,我们也可以看出是由两个UITableView组成,并且各占控制器的一半,那么我们这部分也可以通过xib来实现.

—-> 3.1 创建一个类来管理,同时创建xib

swift,ipad,美团界面

3.2 xib内部图

swift,ipad,美团界面

4 弹出Popover(通过在9.3中对item的监听)

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


//MARK : - 实现监听方法
extension XFJHomeViewController {
 @objc private func presentPopTopViewClick() {
  //弹出位置
  categoryVC.popoverPresentationController?.barButtonItem = topItem
  //设置背景颜色
  categoryVC.popoverPresentationController?.backgroundColor = UIColor.clearColor()
  //model出控制器
  presentViewController(categoryVC, animated: true, completion: nil)
  //取消UIBarButtonItem的交互
  setDisabled()
  //设置代理
  categoryVC.popoverPresentationController?.delegate = self
 }
}

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


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