Трябва да задам височината само за един ред програмно, всички останали редове са статични клетки, създадени в Storyboard с различни височини.
В моя код 5-та клетка трябва да бъде "скрита" по подразбиране, затова искам да задам височината на този ред на 0,0. Всички останали клетки трябва да използват височината си от Storyboard, аз използвам метода tableView:heightForRowAtIndexPath
за да зададете височината на клетките.
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
CGFloat height = self.tableView.rowHeight;
if (indexPath.row == 4)
{
height = 0.0f;
}
return height;
}
Проблемът е, че self.tableView.rowHeight
винаги се връща 658
като височина, което е напълно грешна стойност.
Отговори:
0 за отговор № 1Ако внедрите heightForRowAtIndexPath
трябва да зададете стойност за всички клетки или ще се сблъскате с подобни неща. Това, което можете да направите, е следното:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
switch (indexPath.row){
case 4:
return 0;
default:
static NSNumber *height;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyCustomCell"];
height = @(cell.bounds.size.height);
return [height floatValue];
}
}