从UITableView呈现模态视图控制器会在关闭时清除单元格上的图像

时间:2014-05-29 18:06:13

标签: ios objective-c uitableview

我有一个带有多个自定义单元格的UITableView。一个特殊的可重用单元有一个名为" bargraphImageView"的UIImageView插座。 @property (weak, nonatomic) IBOutlet UIImageView *barGraphImageView;

当用户点击其中一个单元格时,我们会计算一些数据并通过设置bargraphImageView.image来显示图形

[cell.barGraphImageView setFrame:CGRectMake(18, 0.5f, 0, height)];
[cell.barGraphImageView setImage:[stretchableImage stretchableImageWithLeftCapWidth:40 topCapHeight:0]];
[UIView animateWithDuration:1.0f delay:0.0f usingSpringWithDamping:dmp initialSpringVelocity:vel options:opt animations:^{
        [cell.barGraphImageView setFrame:CGRectMake(18, 0.5f, (296 * percent), height)];
    } completion:nil];

效果很好,并且显示正确。但是,当我模态segue到另一个viewController [self performSegueWithIdentifier:@"NewQuestionSegue" sender:self];,然后关闭viewController [self dismissViewControllerAnimated:YES completion:nil];时,所有单元格上的barGraphImageViews都已清除。

我在同一个单元格(包括UIImageViews)上还有其他几个不清楚的插座,这就是为什么这对我来说太令人困惑了。我在离开细胞时打电话给cell.barGraphImageView.image = nil,但细胞不会在这里出列。

有关为何/如何发生的任何想法?

编辑: 我甚至尝试在viewDidAppear方法中调用tableView上的reloadData。如果已经显示了tableView:cellForRowAtIndexPath,我会自动显示图形(没有动画)。

这个DID不起作用:(barGraphImageView仍然被清除)

- (void)viewWillAppear:(BOOL)animated
{
    [self.tableView reloadData];
}

这个DID工作:(一旦tableViewController完全可见,barGraphImageViews显示正确:

- (void)viewDidAppear:(BOOL)animated
{
    [self.tableView reloadData];
}

为什么?

编辑#2:编辑#2: 由于似乎没有人知道答案,有没有人知道如何调试这个?

0 个答案:

没有答案