使用Autolayout的表视图单元格高度在滚动后消失

时间:2017-12-27 19:51:19

标签: ios objective-c uitableview autolayout

我有一个UITableView的Feed,我希望表视图单元格的高度根据是否有图片以及图片的大小而有所不同。

关于这个tutorial以及关于SO的很多问题,我已将自定义单元格元素的自动布局限制放在ContentView上,反过来,我已将以下两行放在{{1}中}。

viewDidLoad

从我所读到的,这应该是管理单元格的高度。

好消息是表格视图在加载时正确显示。带有图片的单元格很高并显示图片。没有图片的单元格很短,不显示图片。

坏消息是,当我向下滚动时,不应该有图像的单元格会有图像。图案是两个单元格,图像后跟两个没有图像的单元格,其中所有单元格都没有图像。

我认为这个问题与出列然后重新排列单元格有关,但据说你需要做的就是将上面两行放在_tableView.estimatedRowHeight = 200; _tableView.rowHeight = UITableViewAutomaticDimension; 中。

欢迎任何有关如何解决此问题的建议。

修改

这是viewDidLoad的代码,它采用自定义单元格cellForRowAtIndexPath

Cell

配置单元的代码非常精细,因为有十个元素。但是,对于有问题的图像视图,仍然存在问题的简化版本如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    IDFeedCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    if (cell == nil) {
        cell = [[IDFeedCell alloc] initWithStyle:UITableViewCellStyleDefault
                                        reuseIdentifier:@"Cell"];
    }
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    Feed *aFeed = [self.fetchedResultsController objectAtIndexPath:indexPath];

    [self configureCell:cell withFeed:aFeed];

    return cell;
}

0 个答案:

没有答案