UIPageViewController - 翻转到随机页面需要花费大量时间

时间:2012-10-16 09:44:12

标签: iphone ios cocoa-touch

正在开发一款基于页面的iPhone应用程序。现在,点击一个按钮,我会翻到随机页面。在翻转时,首先调用新页面的viewDidAppear,&然后调用当前页面的viewDidDisappear(这是预期的行为)。新页面快速出现(我在viewDidAppear中打印了[NSDate date]),但在新页面的viewDidAppear之后平均30到40秒之后调用当前页面的'viewDidDisappear'(&) ;之间没有调用其他方法;我在每个方法中放置NSLog以查看是否有其他方法被调用)!所以它是这样的: 1.新页面的viewDidAppear被称为&几乎立即结束(我通过打印viewDidAppear的开始和结束时间来检查) 2.几乎没有任何事情发生了将近30到40秒('新页面的'viewDidAppear'结束后'') 3.然后,调用当前页面的viewDidDisappear! (&我在viewDidDisappear / viewWillDisappear中没有处理;我只是打印当前时间)

为什么中间有这么长的停顿?

这是我的相关代码段: (环境:XCode 4.3,iOS 5.0,用iPad测试)

转向随机页面的代码:

NSMutableArray *array = [[NSMutableArray alloc] init];
ViewController_EachPage *page = [self getPageAtIndex:randomPageNum];
if ((page != nil) && (page != NULL)) {
    [array insertObject:page atIndex:0];
}
[self.viewCtrlrPages 
     setViewControllers:[NSArray arrayWithArray:array]  
    direction:UIPageViewControllerNavigationDirectionForward 
     animated:YES completion:nil];

viewDidAppear方法

....
self.timer = [NSTimer scheduledTimerWithTimeInterval:10.0f
                target:self selector:@selector(hideThem)
                userInfo:nil repeats:NO];   

[((com_AppDelegate *) [[UIApplication sharedApplication] delegate]).viewCtrlrCoverPage.viewCtrlrPages initializePage];

NSLog(@"EachPage.viewDidAppear at %@", [NSDate date]);
....

viewDidDisappear方法

-(void) viewWillDisappear:(BOOL)animated {
    NSLog(@"EachPage.viewWillDisappear");
    [self.timer invalidate];
}

-(void) viewDidDisappear:(BOOL)animated {
    NSLog(@"EachPage.viewDidDisappear at %@", [NSDate date]);
}

1 个答案:

答案 0 :(得分:0)

你未能在viewWillAppear / viewWillDisappear等错误的电话中打电话。不好主意。