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

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

—-> 5.2 地区


///MARK : - 实现接收地区通知的中调用的方法
extension XFJHomeViewController {
  @objc private func districtNotic(disNic : NSNotification){
  //取出通知中的内容
  let districtData = disNic.userInfo![XFJDistrictNotificationKey] as! XFJDistrict
  //此处(有可能没有子数据,所以这里不需强转)
  let subDistrictData = disNic.userInfo![XFJSubDistrictNotificationKey]
  //设置数据(获取顶部的view)
  let districtTopView = gzItem?.customView as! XFJTopView
  //子数据
  let count = districtData.subregions?.count
  //判断
  if count == 0 {
    districtTopView.title = "美团"
    districtTopView.subtitle = districtData.name
  }else{
    districtTopView.title = districtData.name
    districtTopView.subtitle = subDistrictData as! String?
  }
  //退出poper
  districtVC.dismissViewControllerAnimated(true) { () -> Void in
    //dismiss后允许交互
    self.setEnabled()
    }
  }
}

—-> 5.3 排序


///MARK : - 实现接收排序通知的中调用的方法
extension XFJHomeViewController {
  @objc private func sortsNotic(sortsNic :NSNotification){
    //获取通知中的内容
    let sortsData = sortsNic.userInfo![XFJSortsNotificationKey] as! XFJSorts
    //获取顶部的view
    let sortsView = sortItem?.customView as! XFJTopView
    //设置数据
    sortsView.subtitle = sortsData.label

    //移除poper
    sortsVC.dismissViewControllerAnimated(true) { () -> Void in
      //dismiss后允许交互
      self.setEnabled()
    }
  }
}

十四 细节处理

1 我们发现当运行在横屏的时候,没有问题,但是当在运行的之后转换为竖屏,导航条中item间的距离会被拉伸,这怎么解决呢?

—-> 1.1 产生这种现象的原因 : autoresizing导致屏幕旋转的时候,子控件跟随父控件的拉伸而拉伸

—-> 1.2 解决 :(如下图)—> 将正方形中间的红线去除就可以

swift,ipad,美团界面

2 当点击某个item的时候,发现再点击其他的item的时候,前一个item并没有退出,这样给用户的体验不好.我们通过代码来设置.

—-> 2.1 在监听用户点击的按钮中让所有的item都取消交互调用下面代码


@objc private func setDisabled() {
    topItem?.enabled = false
    gzItem?.enabled = false
    sortItem?.enabled = false
  }

—-> 2.2 在实现接收通知中调用的方法中,在poper被dismiss的时候,允许用户交互,调用下面代码来允许交互


@objc private func setEnabled() {
    topItem?.enabled = true
    gzItem?.enabled = true
    sortItem?.enabled = true
  }

—-> 2.3 在实现对item按钮的监听方法中,我们设置poper的代理为当前控制器(这里只说明一段代码,其它模块也是一样的)