0

ページベースのiPhoneアプリを開発しています。今、ボタンをクリックすると、ランダムなページにめくっています。反転すると、新しいページのviewDidAppearが最初に呼び出され、次に現在のページのviewDidDisappearが呼び出されます(これは予想される動作です)。新しいページはすぐに表示されますが(viewDidAppearに[NSDate date]の印刷を入れました)、現在のページの「viewDidDisappear」は、新しいページのviewDidAppearの平均30〜40秒後に呼び出されます(&間に他のメソッドは呼び出されません。各メソッドに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。悪い考えです。

于 2012-10-17T16:35:24.517 に答える