0

我正在使用一个数组在 UIPageViewController 上添加一些 viewController。问题是当您进一步滑动时它们会留在内存中,我想删除它们。我找到了这个委托方法:

- (void)pageViewController:(UIPageViewController *)pvc didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{
    // If the page did not turn
    if (!completed)
    {
        return;
    }
    // This is where I want to delete the previousViewControllers to release memory
}

但是如何删除那些previousViewControllers?如果您向后滚动,它们需要重新加载,但我需要删除它们,否则它们会一直留在内存中。

4

1 回答 1

-1

我从来没有使用过UIPageViewController,但它似乎previousViewControllers是一个只读的。我要做的是向以前的 ViewController 发送一条消息,告诉它们重新加载。

例如,我相信这将访问显示的最后一个 ViewController :

MyVC *lastVC = (MyVC*)[previousViewControllers objectAtIndex:[previousViewControllers count]-1];
lastVC.reloadFlag = YES; // Assuming you have a reloadFlag property in your MyVC class

因此,您可以将其放入问题中的方法中。

然后确保在您返回 ViewController 时viewWillAppear在您的MyVC *对象中调用,如果是,请在其中放入一个简单的东西:

if(_reloadFlag) {
    //updateUI
}

这只是一个想法,您可能需要更改一些内容才能使其正常工作。

于 2013-04-24T14:20:01.270 回答