(注意:我使用的tableView来自Parse.com iOS SDK - PFQueryTableViewController)
场景 =我有一个TableViewController,它有两种不同类型的单元格(每个单元格都有自己的标识符)。如果对象上的键为true,则检查每个查询并加载到数据源中的对象。根据结果,我将ReusueReusableCellWithIdentifier dequeue到正确的单元格。
-(PFTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object:(PFObject *)object {
myTableViewCell *cell;
if ([object[@"orientation"] isEqualToString:@"left"] || [object[@"orientation"] isEqualToString:@"right"]) {
myTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
else {
myTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell2"];
}
这一切都有它的作用。每个单元格都在正确的indexPath.row和所有内容中加载。问题是我的tableView"行高"本身不会重新调整新细胞。这会导致细胞重叠并使一切变得丑陋。我可以告诉storyboard中的tableView将行高设置为两个单元格高度中的较大者,但是在单元格之间留下了很大的空间,这也使它看起来很难看。
问题 =我需要使用
这是我的信念(并纠正我,如果我错了)-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
方法以实现这一目标。在我需要帮助的地方,我不知道如何在indexPath上设置每个单元格的高度,具体取决于'标识符'我在cellForRowAtIndexPath方法中给每个单元格。
我正在寻找什么 =这样的事情(请原谅SuedoCode)
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if ([cell.identifier isEqual:@"Cell"] {
return 100;
}
else {
return 200;
}
}
答案:我明白了!(我将下面的答案标记为已被接受,因为它指出了我正确的方向)
因为我使用的是PFQueryTableViewController,所以我必须这样做......
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
PFObject *object = [self.objects objectAtIndex:indexPath.row];
if ([object[@"orientation"] isEqual:@"left"] || [object[@"orientation"] isEqual:@"right"]) {
return 100;
}
else {
return 200;
}
}
答案 0 :(得分:1)
首先,要记住一些事情。在CellForRowatIndexPath之前调用heightForRowAtindexPath,简单地说,如果object在indexPath X,则返回Y或Z.
更正确的方法可能是对tableCell类进行子类化,在.h文件中设置一个属性,然后找出路径......我会给你一个肮脏的方法:)
创建一个NSMutableArray属性(不要忘记在某处/以某种方式初始化它),并根据您的dataSource,用高度A或高度B(浮点数)填充它。现在,回到heightForRowAtIndexPath,您可以说出以下内容:
return (int)self.myMutableArray[indexPath.row];