相关疑难解决方法(0)

从UIPageViewController中删除视图控制器

奇怪的是,没有直接的方法来做到这一点.请考虑以下情形:

  1. 您有一个页面视图控制器有1页.
  2. 添加另一页(共2页)并滚动到它.
  3. 我想要的是,当用户滚动回第一页时,第二页现在被删除并取消分配,用户再也无法刷回该页面.

我已经尝试在转换完成后将视图控制器删除为子视图控制器,但它仍然允许我滚动回空页面(它不会"调整大小"页面视图)

我想做什么?

iphone cocoa-touch objective-c ios

45
推荐指数
4
解决办法
3万
查看次数

UIPageViewController在内存不足时翻转过快时崩溃

由于Xcode的UIPageViewController模板缓存了所有页面数据,我遇到了一些内存问题,因此我将其更改为动态加载页面,所以现在当我的应用程序收到内存不足警告时,它会释放内存以便页面不显示,但如果用户通过点击屏幕边缘快速翻阅页面,它仍然会崩溃.我猜这是因为当调用didReceiveMemoryWarning时,它无法足够快地释放内存.如果用户缓慢翻转,它可以正常工作.我限制了用户翻页的速度,但它仍然会发生.我希望每次翻页时都能释放内存,而不必等待低内存警告.我正在使用ARC.有没有办法做到这一点?或者我还能做些什么来防止这种情况发生?谢谢.

编辑:

(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    NSUInteger index = [self indexOfViewController:(SinglePageViewControllerSuperclass *)viewController];
    if ((index == 0) || (index == NSNotFound)) {
        return nil;
    }

    index--;
    return [self viewControllerAtIndex:index];
} 

(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    NSUInteger index = [self indexOfViewController:(SinglePageViewControllerSuperclass *)viewController];
    if (index == NSNotFound || index == MAX_PAGE_INDEX) {
        return nil;
    }

    return [self viewControllerAtIndex:++index];
}
Run Code Online (Sandbox Code Playgroud)

ios automatic-ref-counting uipageviewcontroller

19
推荐指数
1
解决办法
9453
查看次数