美团知识点
2016-03-29 22:21
225 查看
// 拉伸 self.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg_dealcell"]]; // 平铺 self.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg_dealcell"]];
保留两位小数 // 现价 self.currentPriceLabel.text = [NSString stringWithFormat:@"¥ %@", deal.current_price]; NSUInteger dotLoc = [self.currentPriceLabel.text rangeOfString:@"."].location; if (dotLoc != NSNotFound) { // 超过2位小数 if (self.currentPriceLabel.text.length - dotLoc > 3) { self.currentPriceLabel.text = [self.currentPriceLabel.text substringToIndex:dotLoc + 3]; } }
//当我们想要删除某个一样的东西时,删除的是内存一样的,但是我们要求的是删除内容一样,这样remove不执行,所以我们重写这个东西的isEqual方法。 - (BOOL)isEqual:(MTDeal *)other { return [self.deal_id isEqual:other.deal_id]; }
使用fmdb要用导入libsqlite3.tbd
cell会有复用,当上下滑动tableView或者collectionView的时候,前后cell会复用,导致很多错误现象出现,我们需要把这个东西写在模型里面,通过控制模型的属性来控制cell的样式 例如在- (void)setDeal:(MTDeal *)deal中,这么写 // 根据模型属性来控制cover的显示和隐藏 self.cover.hidden = !deal.isEditting; // 根据模型属性来控制打钩的显示和隐藏 self.checkView.hidden = !deal.isChecking; 因为上下拉动tableview或者collectionView的时候会加载这个方法来获得内容,那我们只要让他和model绑定就不出现这个错误了
//防止多次加载数据,返回回来的数据可能是上一次的,用最后一个reuqest表明 //请求数据以后 if (request != self.lastRequest) return;
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { // 计算一遍内边距 [self viewWillTransitionToSize:CGSizeMake(collectionView.width, 0) withTransitionCoordinator:nil]; //因为数据请求完(成功)都会重新布局,所以我们在这里将数据请求完界面的变化写在这里 // 控制尾部刷新控件的显示和隐藏 self.collectionView.footerHidden = (self.totalCount == self.deals.count); // 控制"没有数据"的提醒 self.noDataView.hidden = (self.deals.count != 0); return self.deals.count; }
//比较两个NSDate之间的时间差 // 设置剩余时间 NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"yyyy-MM-dd"; NSDate *dead = [fmt dateFromString:self.deal.purchase_deadline]; // 追加1天 dead = [dead dateByAddingTimeInterval:24 * 60 * 60]; NSDate *now = [NSDate date]; //比较两个NSDate之间的时间差 NSCalendarUnit unit = NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute; NSDateComponents *cmps = [[NSCalendar currentCalendar] components:unit fromDate:now toDate:dead options:0]; if (cmps.day > 365) { [self.leftTimeButton setTitle:@"一年内不过期" forState:UIControlStateNormal]; } else { [self.leftTimeButton setTitle:[NSString stringWithFormat:@"%ld天%ld小时%ld分钟", (long)cmps.day, (long)cmps.hour, (long)cmps.minute] forState:UIControlStateNormal]; }
涉及到数据库的用工具类,提供方法即可 将一个模型存到数据库中,要将这个模型转为NSData才行, 例如添加一个收藏时: + (void)addCollectDeal:(MTDeal *)deal { //存到数据库中,要先转换为NSData才可以的 //这里就是为什么MTDeal要实现NSCoding NSData *data = [NSKeyedArchiver archivedDataWithRootObject:deal]; [_db executeUpdateWithFormat:@"INSERT INTO t_collect_deal(deal, deal_id) VALUES(%@, %@);", data, deal.deal_id]; }
当很多控制器的形式一样的时候,写一个基类控制器,布局啊请求方式啊都一样,设置传递参数不一样即可
MJRefresh中, //进入下拉刷新状态, 发送请求给服务器 [self.collectionView headerBeginRefreshing]; 当headerFresh进入状态的时候回主动请求数据
AutoresizingMask UIViewAutoresizingNone 不自动调整。 UIViewAutoresizingFlexibleLeftMargin 自动调整view与父视图左边距,以保证右边距不变 UIViewAutoresizingFlexibleWidth 自动调整view的宽度,保证左边距和右边距不变 UIViewAutoresizingFlexibleRightMargin 自动调整view与父视图右边距,以保证左边距不变 UIViewAutoresizingFlexibleTopMargin 自动调整view与父视图上边距,以保证下边距不变 UIViewAutoresizingFlexibleHeight 自动调整view的高度,以保证上边距和下边距不变 UIViewAutoresizingFlexibleBottomMargin 自动调整view与父视图下边距,以保证上边距不变
当导航栏的几个按钮UIBarbutton的间距太小时,设置这些item的宽度大一点,图片还是居中,这样就可以了
[self addChildViewController:citySearchResult]; [self.view addSubview:citySearchResult.view];
/** * 2.使用谓词过滤器 // 谓词\过滤器:能利用一定的条件从一个数组中过滤出想要的数据 */ NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name contains %@ or pinYin contains %@ or pinYinHead contains %@", searchText, searchText, searchText]; //从所有的城市数组中过滤出符合条件的 self.resultCities = [[MTMetaTool cities] filteredArrayUsingPredicate:predicate]; //刷新tableView [self.tableView reloadData];
假如说一个控制器是present出来的,那么他也是要自己dismiss掉,[self dismiss...];是自己dismiss,而不是把你present出来的那个
相关文章推荐
- Android 监听软键盘搜索键
- C语言编程练习——出现次数最多的数
- Android 监听软键盘搜索键
- 计算机图形学------英文单词积累(一)
- 五大常用算法之四:回溯法
- 调整数组顺序使奇数位于偶数前面
- HDU5654xiaoxin and his watermelon candy 离线+树状数组
- 结对编程-词频统计
- 一天一个Java基础——排序
- 正则表达式
- 项目组制定的一份页面优化指南
- problemF
- [leetcode 11] Container With Most Water
- 如何解决内存碎片
- SQL语句之order by 、group by、having、where
- UVa 272 Tex Quotes --- 水题
- Android Notification剖析
- 异步任务处理---AsyncTask
- NYOJ 题目239 月老的难题 (二分图最大匹配-匈牙利算法模板)
- 在art.dialog中加载ztree