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

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

8 处理用户点击item中的某行cell,将cell中显示的图片和主标题,子标题显示在item中

—-> 8.1 定义协议 :


///MARK : - 定义协议,用来传递当用户选择了弹出的控制器中的某行,将cell中显示的内容显示到对应的top按钮中
@objc protocol XFJTableViewDelegate : NSObjectProtocol {
  //点击了左边,告诉代理选择了左边的哪一行,只要告诉代理不需返回参数
  func lrTableView(seletLeftButton leftRow : Int)
  //点击了右边,高度代理点击了右边的哪一行,同时告诉代理选中了左边的哪一行,不需要返回
  func lrTableView(seletRightButton rightRow : Int,seletLeftButton leftRow : Int)
}

—-> 8.2 设置代理 :


///设置代理(处理选中弹出的控制器中的哪一行)
  weak var delegate : XFJTableViewDelegate?

—-> 8.3 实现协议中的方法


///MARK : - 实现分类的代理方法(处理的是用户点击cell的业务逻辑)
extension XFJCategoryViewController : XFJTableViewDelegate {
  //用户点击了左侧,告诉代理点击了左侧的哪一行
  func lrTableView(seletLeftButton leftRow: Int) {
    //从模型中取出数据
    let catrgoryData = categories[leftRow]
    //判断左侧是否有子数据
    let subCatroyData = catrgoryData.subcategories?.count
    //如果没有子数据,就将数据发送给外界,进行数据更改
    if subCatroyData == 0 {
      //通过通知的方式发送
      NSNotificationCenter.defaultCenter().postNotificationName(XFJCategoryNotification, object: nil, userInfo: [XFJCategoryNotificationKey : catrgoryData])
    }

  }
  //用户点击了右侧,高度代理点击了右侧哪一行,同时告诉代理选中了左侧哪一行
  func lrTableView(seletRightButton rightRow: Int, seletLeftButton leftRow: Int) {
    //从模型中获取数据
    let catrgoriesData = categories[leftRow]
    //取出子数据
    let subCatrgoriesData = catrgoriesData.subcategories![rightRow]
    //发送通知
    NSNotificationCenter.defaultCenter().postNotificationName(XFJCategoryNotification, object: nil, userInfo: [XFJCategoryNotificationKey : catrgoriesData, XFJSubCategoryNotificationKey : subCatrgoriesData])
  }
}

十三 通知

1 我们是如何将cell中对应的文字和图片显示到item中?

—-> 1.1 我们采用发送通知的方法将相关数据传递到item中

2 创建一个文件用来保存通知需要的参数

swift,ipad,美团界面


//分类
let XFJCategoryNotification = "XFJCategoryNotification"
let XFJCategoryNotificationKey = "XFJCategoryNotificationKey"
let XFJSubCategoryNotificationKey = "XFJSubCategoryNotificationKey"

//地区
let XFJDistrictNotification = "XFJDistrictNotification"
let XFJDistrictNotificationKey = "XFJDistrictNotificationKey"
let XFJSubDistrictNotificationKey = "XFJSubDistrictNotificationKey"

//排序
let XFJSortsNotification = "XFJSortsNotification"
let XFJSortsNotificationKey = "XFJSortsNotificationKey"