|  | @@ -27,23 +27,35 @@ class BFChooseMusicView: UIView {
 | 
	
		
			
				|  |  |      var musicDic = [Int64 : [PQVoiceModel]]()
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      var searchModel : PQVoiceModel?{
 | 
	
		
			
				|  |  | +        willSet{
 | 
	
		
			
				|  |  | +            if searchModel != nil {
 | 
	
		
			
				|  |  | +                if let catogory = categories.first(where: { mod in
 | 
	
		
			
				|  |  | +                    mod.tagName == "热门"
 | 
	
		
			
				|  |  | +                }){
 | 
	
		
			
				|  |  | +                    if let tid = catogory.tagId, let _ = musicDic[tid] {
 | 
	
		
			
				|  |  | +                        // 找到热门的数组
 | 
	
		
			
				|  |  | +                        musicDic[tid]?.removeFirst()
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          didSet {
 | 
	
		
			
				|  |  |              if let searchModel = searchModel {
 | 
	
		
			
				|  |  |                  if let catogory = categories.first(where: { mod in
 | 
	
		
			
				|  |  |                      mod.tagName == "热门"
 | 
	
		
			
				|  |  |                  }){
 | 
	
		
			
				|  |  | -                    if let tid = catogory.tagId {
 | 
	
		
			
				|  |  | +                    if let tid = catogory.tagId, let list = musicDic[tid] {
 | 
	
		
			
				|  |  |                          var arr = [PQVoiceModel]()
 | 
	
		
			
				|  |  |                          arr.append(searchModel)
 | 
	
		
			
				|  |  | -                        if let list = musicDic[tid]{
 | 
	
		
			
				|  |  | +                        if list.first?.musicId != searchModel.musicId {
 | 
	
		
			
				|  |  |                              arr.append(contentsOf: list)
 | 
	
		
			
				|  |  | +                            musicDic[tid] = arr
 | 
	
		
			
				|  |  | +                            searchModel.isSelected = true
 | 
	
		
			
				|  |  | +                            chosedMusic?.isSelected = false
 | 
	
		
			
				|  |  | +                            chosedMusic = searchModel
 | 
	
		
			
				|  |  | +                            
 | 
	
		
			
				|  |  | +                            musicTb.reloadData()
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  | -                        musicDic[tid] = arr
 | 
	
		
			
				|  |  | -                        searchModel.isSelected = true
 | 
	
		
			
				|  |  | -                        chosedMusic?.isSelected = false
 | 
	
		
			
				|  |  | -                        chosedMusic = searchModel
 | 
	
		
			
				|  |  | -                        
 | 
	
		
			
				|  |  | -                        musicTb.reloadData()
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -67,6 +79,8 @@ class BFChooseMusicView: UIView {
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  |      var chosedIndexPath : IndexPath?
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  | +    var chosedCellStatu : BFMuicInfoCellState = .pause
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  |      var loadedTimeRangesObserver : NSKeyValueObservation?
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // 试听音乐
 | 
	
	
		
			
				|  | @@ -133,8 +147,9 @@ class BFChooseMusicView: UIView {
 | 
	
		
			
				|  |  |          backgroundColor = UIColor.clear
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  |          let dismisBtn = UIButton()
 | 
	
		
			
				|  |  | +        dismisBtn.tag = 1004
 | 
	
		
			
				|  |  |          dismisBtn.frame = CGRect(x: 0, y: 0, width: width, height: 200)
 | 
	
		
			
				|  |  | -        dismisBtn.addTarget(self, action: #selector(dimiss), for: .touchUpInside)
 | 
	
		
			
				|  |  | +        dismisBtn.addTarget(self, action: #selector(btnAction(btn:)), for: .touchUpInside)
 | 
	
		
			
				|  |  |          addSubview(dismisBtn)
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  |          let backV = UIView()
 | 
	
	
		
			
				|  | @@ -197,6 +212,13 @@ class BFChooseMusicView: UIView {
 | 
	
		
			
				|  |  |          addSubview(progressL)
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  |          self.musicVolume = 0.2
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +        NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: player.currentItem, queue: .main) {[weak self] notice in
 | 
	
		
			
				|  |  | +            guard let wself = self else { return }
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  | +            wself.choseCell()?.status = .pause
 | 
	
		
			
				|  |  | +            wself.chosedCellStatu = .pause
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          loadedTimeRangesObserver = player.observe(\AVPlayer.currentItem?.loadedTimeRanges, options: [.new, .initial]) { [weak self] (player, change) in
 | 
	
		
			
				|  |  |              
 | 
	
	
		
			
				|  | @@ -208,6 +230,7 @@ class BFChooseMusicView: UIView {
 | 
	
		
			
				|  |  |                      if (player.currentItem?.asset as? AVURLAsset)?.url.absoluteString ?? "b" == cell.data?.musicPath ?? "a" {
 | 
	
		
			
				|  |  |                          if cell.status != .playing{
 | 
	
		
			
				|  |  |                              cell.status = .playing
 | 
	
		
			
				|  |  | +                            wself.chosedCellStatu = .playing
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
	
		
			
				|  | @@ -336,7 +359,7 @@ class BFChooseMusicView: UIView {
 | 
	
		
			
				|  |  |          switch btn.tag{
 | 
	
		
			
				|  |  |          case 1001:
 | 
	
		
			
				|  |  |              clickBtnAction?(.cancle)
 | 
	
		
			
				|  |  | -        case 1002:
 | 
	
		
			
				|  |  | +        case 1002, 1004:
 | 
	
		
			
				|  |  |              clickBtnAction?(.sure)
 | 
	
		
			
				|  |  |          case 1003:
 | 
	
		
			
				|  |  |              clickBtnAction?(.search)
 | 
	
	
		
			
				|  | @@ -354,10 +377,7 @@ class BFChooseMusicView: UIView {
 | 
	
		
			
				|  |  |          player.pause()
 | 
	
		
			
				|  |  |          choseCell()?.changeSelected(false)
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -    @objc func dimiss(){
 | 
	
		
			
				|  |  | -        clickBtnAction?(.sure)
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  extension BFChooseMusicView:UITableViewDelegate, UITableViewDataSource {
 | 
	
	
		
			
				|  | @@ -376,6 +396,7 @@ extension BFChooseMusicView:UITableViewDelegate, UITableViewDataSource {
 | 
	
		
			
				|  |  |              if cell.data?.isSelected ?? false {
 | 
	
		
			
				|  |  |                  chosedIndexPath = indexPath
 | 
	
		
			
				|  |  |                  chosedMusic = cell.data
 | 
	
		
			
				|  |  | +                cell.status = chosedCellStatu
 | 
	
		
			
				|  |  |              }else{
 | 
	
		
			
				|  |  |                  cell.status = .normal
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -421,6 +442,7 @@ extension BFChooseMusicView:UITableViewDelegate, UITableViewDataSource {
 | 
	
		
			
				|  |  |                  player.pause()
 | 
	
		
			
				|  |  |                  cell.status = .pause
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            chosedCellStatu = cell.status
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      
 |