在网络
先说说今天遇见的坑,在自适应加载去cell的时候遇见了一个坑
- (CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath {
UITableViewCell *cell = [self.tavleView cellForRowAtIndexPath:indexPath];
return cell.frame.size.height;
}
刚开始这样写 死活没发现那里错了 但是就是报错,最后经过大神指点才知道 cell在加载的时候会先走 cellforrowheight这个方法 所以这个方法就报错了
解决的办法就是
- (CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath {
self.tableView.delegate = nil;
UITableViewCell *cell = [self.tavleView cellForRowAtIndexPath:indexPath];
self.tableView.delegate = self;
return cell.frame.size.height;
}
//最后的解决办法就是用模型
- (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
GoodDetailPicModel * model = _detailPicArray[indexPath.section];
//NSLog(@”–%@”,model.imageUrl);
GoodDetailPicCell * cell = [tableView dequeueReusableCellWithIdentifier:cellID forIndexPath:indexPath];
[cell.GoodDetailPic sd_setImageWithURL:[NSURL URLWithString:model.imageUrl] placeholderImage:[UIImage
imageNamed:@”123.jpg”] completed:^(UIImage *image, NSError *error,
SDImageCacheType cacheType, NSURL *imageURL) {
if (image && !model.heightStr) {;
model.heightStr = [NSString stringWithFormat:@”%f”,image.size.height /(image.size.width /
self.view.frame.size.width)];
[self.tavleView reloadData];
}
}];
return cell; }- (CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath {
GoodDetailPicModel * model = _detailPicArray[indexPath.section];
if (model.heightStr) {
return [model.heightStr floatValue];
}
return 44; }
就是在没有加载出来之前 先返回固定高度 等高度计算出来再一一进行relodata