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

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

3 定义在XFJLRTableView中的协议方法第一部分


///MARK : - 定义协议,用协议的方法来控制top中没个按钮的点击,弹出控制器设置相应的内容
@objc protocol XFJTableViewDataSource : NSObjectProtocol {
  ///左边的cell显示的总行数(需要将左边的tableView作为参数传递进去)
  func numberOfRowsInLeft (leftTableView : XFJLRTableView) ->Int
  ///左边的cell显示的数据
  func lrTableView(titleDataSource leftRow: Int) ->String?
  ///左边的cell显示的子数据
  func lrTableView(subDataSource leftRow : Int) ->[String]
  ///左边的cell显示的平常图片(有些是不存在图片的)
  optional func lrTableView(normalImageInLeft leftRow : Int) ->String
  ///左边的cell显示的高亮图片(有些是不存在图片的)
  optional func lrTableView(highlightImageLeft leftRow : Int) ->String
}

4 设置代理 :(分类模块代理)


///设置代理(处理弹出的控制器)
  weak var delegateSource : XFJTableViewDataSource?

5 注意 : 在对协议实现的部分方法中,已经在XFJLRTableView类中的数据源方法这种实现了或者是做出了判断.(上面数据源方法中有介绍)

6 对分类用户点击后实现协议相关的方法

—-> 6.1 设置对应的控制器为代理


override func viewDidLoad() {
    super.viewDidLoad()
    //快速创建xib
    let lrTableView = XFJLRTableView.lrTableView()
    //设置尺寸
    lrTableView.frame = view.bounds
    //添加tableView
    view.addSubview(lrTableView)
    //设置代理(处理的是弹出控制器的部分)
    lrTableView.delegateSource = self
    //设置代理(处理的是用户点击cell的业务逻辑)
    lrTableView.delegate = self
  }

7 实现协议方法


///MARK : - 实现分类的代理方法(处理的是弹出控制器的部分)
extension XFJCategoryViewController : XFJTableViewDataSource {
  ///MARK : - 左侧cell的行数
  func numberOfRowsInLeft(leftTableView: XFJLRTableView) -> Int {
    return categories.count
  }
  ///MARK : - 左侧cell的标题
  func lrTableView(titleDataSource leftRow: Int) -> String? {
    //取出模型数据
    let categorie = categories[leftRow]
    return categorie.name
  }
  ///MARK : - 左侧cell的子标题
  func lrTableView(subDataSource leftRow: Int) -> [String] {
    //取出模型数据
    let categorie = categories[leftRow]
    //判断
    return categorie.subcategories ?? []
  }
  ///MARK : - cell平常图片
  func lrTableView(normalImageInLeft leftRow: Int) -> String {
    //取出模型数据
    let categorie = categories[leftRow]
    return categorie.small_icon!
  }
  ///MARK : - cell的高亮图片
  func lrTableView(highlightImageLeft leftRow: Int) -> String {
    //取出模型数据
    let categorie = categories[leftRow]
    return categorie.small_highlighted_icon!
  }
}