1. 程式人生 >實用技巧 >其它 >OC Extension YSCountDown(cell倒計時-用於秒殺活動)

OC Extension YSCountDown(cell倒計時-用於秒殺活動)


技術標籤:UI的封裝iosobjective-cswiftxcode

**

一直覺得自己寫的不是技術,而是情懷,一個個的教程是自己這一路走來的痕跡。靠專業技能的成功是最具可複製性的,希望我的這條路能讓你們少走彎路,希望我能幫你們抹去知識的蒙塵,希望我能幫你們理清知識的脈絡,希望未來技術之巔上有你們也有我。

**

OC   Extension  YSCountDown(cell倒計時-用於秒殺活動)


使用

@property(nonatomic,strong) YSCountDown *countDown;

賦值時間要寫在獲取資料完成的時候  重新整理tableview之前
#pragma  mark 重新整理tableveiw的代理
- (void)fastActivityViewModel:(FastActivityViewModel *)view success:(FastActivityBaseModel *)model{
  //獲取資料成功計算時間
  if (self.viewModel.list != nil && ![self.viewModel.list isKindOfClass:[NSNull class]] && self.viewModel.list.count != 0) {
    self.countDown = [[YSCountDown alloc] initWith:self.tableview :self.viewModel.list :self.viewModel.canRealoadList];
    self.countDown.isPlusTime = NO;
    __weak typeof (self) weakSelf = self;
    //倒計時結束出來重新整理狀態
    self.countDown.block = ^(NSInteger tag) {
      [weakSelf.viewModel.list removeAllObjects];
      [weakSelf.viewModel.canRealoadList removeAllObjects];
      [weakSelf.viewModel getFastActivity];
    };    
  }
  [self.tableview reloadData];
  [self.tableview reloadEmptyDataSet];
}


- (void)dealloc {
  /// 2.銷燬
  [self.countDown destoryTimer];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

  FastActiveCell *cell=[FastActiveCell cellWithTableView:tableView];
  cell.stateLabel.text = self.viewModel.model.s_k_goods_list[indexPath.item].showTitle;
  cell.model = self.viewModel.model.s_k_goods_list[indexPath.item];
  /// 3.繫結tag
  cell.tag = indexPath.row;
  cell.timeLabel.tag  = 1314;
   cell.timeLabel.text = [self.countDown countDownWithPER_SEC:indexPath :self.viewModel.canRealoadList];
  return cell;
}

額外說明一下:
1.賦值時間要寫在獲取資料完成的時候  重新整理tableview之前
2.傳遞進去的的陣列是一個10位時間戳來的。下面的方法是計算時間的方法來的  self.viewModel.list
3. self.viewModel.canRealoadList是用來標誌倒計時結束是夠允許重新整理
原始模型


計算好的時間模型



-(void)calculateShowTimeModel:(FastActivityBaseModel *)model{
  for (int i = 0; i < model.s_k_goods_list.count; i++) {
    //當前時間大於開始時間  有可能結束  有可能開始
    if ([FastActivityViewModel getNowTimestamp] > [model.s_k_goods_list[i].kill_start_time integerValue]) {
      [self.list addObject:model.s_k_goods_list[i].kill_end_time];
      //當前時間大於結束時間   已結束
      if ([FastActivityViewModel getNowTimestamp] > [model.s_k_goods_list[i].kill_end_time integerValue]) {
        model.s_k_goods_list[i].activeState = @"已結束";
        model.s_k_goods_list[i].showTitle = @"";
        [self.canRealoadList addObject:@"不可以"];
      }else{//當前時間小於結束時間   進行中
        model.s_k_goods_list[i].activeState = @"進行中";
        model.s_k_goods_list[i].showTitle = @"距結束";
        [self.canRealoadList addObject:@"可以"];
      }
    }else{   //當前時間小於開始時間   未開始
      [self.list addObject:model.s_k_goods_list[i].kill_start_time];
      model.s_k_goods_list[i].activeState = @"未開始";
      model.s_k_goods_list[i].showTitle = @"距開始";
      [self.canRealoadList addObject:@"可以"];
    }
  }
}

效果

OC   Extension  YSCountDown(cell倒計時-用於秒殺活動)