从UIPageViewController中删除以前添加的viewControllers

时间:2013-04-24 13:50:25

标签: ios objective-c uiviewcontroller uipageviewcontroller

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

- (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?如果你向后滚动它们需要重新加载但是我需要删除它们,否则它们会一直留在内存中。

1 个答案:

答案 0 :(得分:-1)

我从未使用UIPageViewController,但似乎previousViewControllers是只读的。我要做的是向之前的ViewControllers发送一条消息,告诉他们重新加载。

例如,我相信这将访问显示的最后一个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
}

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