有两种 cell
的样式,一种是需要加载一个图片的 Cell_A
,一种是没有的 Cell_B
。Cell_B
的高度比 Cell_A
要小。
那么问题来了,如何让 cell
根据情况自动改变高度呢?
我有一个函数来判断每行到底需不需要图片
- (BOOL) hasImageAtIndexPath:(NSIndexPath *)indexPath {
NSDictionary* item = [[dataDict objectForKey:@"items"] objectAtIndex:indexPath.row];
NSString* url = [item objectForKey:@"url"];
return ![url isEqual: @"NULL"];
}
这样写之后,得到的全是 249 这个高度的。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if ([self hasImageAtIndexPath:indexPath]) {
return 249.0;//cell_a
} else {
return 150.0;//cell_b
}
}
UPDATE:
原来 item
里的关键键值对长这个样子,解析出来是一个 NSNull
的对象,并不是一个 NSString
url = "<null>";
说说我看到的几个问题:
(1)首先你用的语法太老旧了,现在用literal syntax,代码会变成这样:
(2)比较字符串应该用:
(3)如果一直是249,那显然hasImageAtIndexPath:有问题;
(4)是否有必要做成两个cell?从你的内容上看丝毫看不到Auto Layout的影子。