0

我正在开发一个基于页面的 iPhone 应用程序。现在,点击一个按钮,我就翻到了一个随机页面。在翻转时,首先调用新页面的 viewDidAppear,然后调用当前页面的 viewDidDisappear(这是预期行为)。新页面出现很快(我在 viewDidAppear 中打印了 [NSDate date]),但平均在新页面的 viewDidAppear 后 30 到 40 秒后调用当前页面的“viewDidDisappear”(&中间没有调用其他方法;我将 NSLog 放在每个方法中,看看是否调用了其他方法)!所以它是这样的: 1. 新页面的 viewDidAppear 被调用并结束(我通过打印 viewDidAppear 的开始和结束时间检查了这一点) 2. 几乎 30 到 40 秒没有发生任何事情(“之后” 新页面的viewDidAppear 'ends') 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]);
}
4

1 回答 1

0

您未能在viewWillAppear/viewWillDisappear等中调用 super 。坏主意。

于 2012-10-17T16:35:24.517 回答