一些小知识

来源:互联网 发布:男士服装杂志软件 编辑:程序博客网 时间:2024/06/06 03:27

1.在一些按钮的点击事件中,如果由于网络的延迟、线程的阻塞等问题,导致了在实际应用中 用户在短时间内点击多次会出现调用按钮的触发事件时,我们可以通过下面这样的方法来解决

//1.当用户点击后,在进来触发事件后直接将button设置为不可点击senderBtn.userInteractionEnabled = NO;//设置一个block,让其延迟一定时间,再回到主线程执行int64_t delayInSeconds = 1.0;//1秒后执行dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);dispatch_after(popTime, dispatch_get_main_queue(), ^(void){    //1秒后再让其恢复点击事件    sender.userInteractionEnabled = YES;});

2.在需要从服务器获取由一些消息的时间时,由于服务器通常存放的是时间戳,因此获取之后我们是需要将其修改的,可以通过调用下面的方法返回一个字符串的时间

- (NSString *)returnTimeByTimeStamp:(NSString *)timeStamp{    NSTimeInterval time=[timeStamp doubleValue];    NSDate *detaildate=[NSDate dateWithTimeIntervalSince1970:time];    //实例化一个NSDateFormatter对象    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];    //设定时间格式,这里可以设置成自己需要的格式    //:@"yyyy-MM-dd HH:mm:ss" 年-月-日 时-分-秒,其中HH为24小时制    [dateFormatter setDateFormat:@"HH:mm"];    NSString *currentDateStr = [dateFormatter stringFromDate: detaildate];    return currentDateStr;}

3.对于一些由storyBoard创建的控制器,在外部使用时暂时只能通过UIStoryboard的方法来创建。但是有时我们需要直接创建出一个筛选过数据的控制器,这时可以在内部创建一个实例,然后经过传入的参数经过设置后再返回

//storyboard创建的viewController的.m文件中- (instancetype)initWithOrderlType:(NSString *)typeName AndTitle:(NSString *)title{    //先创建一个实例    TradeViewController *vc= [[UIStoryboard storyboardWithName:@"Trade" bundle:nil] instantiateViewControllerWithIdentifier:@"TradeViewController"];    //对创建出来的控制器进行修改      //例如设置请求的参数,重新发送一个请求来改变当前的参数    _requestModel = [[TradeListRequestModel alloc] init];    _requestModel.type = typeName;    [vc requsetDataWithRequest:_requestModel];    //设置标题、取消顶部一些不要的控件等    vc.tableView.tableHeaderView = nil;    vc.title = title;    //最后返回    return vc;}
0 0