Ho un UIPageViewController
che utilizza un numero intero per indicare su quale pagina è attiva. Funziona bene, ma se l'utente fa rapidamente scorrere più volte per arrivare a una pagina più indietro, il numero intero cambia più rapidamente di quanto facciano le viste, e quindi l'intera cosa cade a pezzi (l'app pensa che sia a pagina 7 quando potrebbe essere visualizzazione pagina 3). Che cosa sto facendo di sbagliato? C'è un metodo diverso che dovrei usare per dire dove sono? Grazie.Le viste di UIPageViewController incasinate se l'utente si sposta troppo rapidamente
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
if (pageNumber == 0) {
pageNumber++;
NSLog(@"%i", pageNumber);
Two *two = [[Two alloc] init];
return two;
} else if (pageNumber == 1) {
pageNumber++;
NSLog(@"%i", pageNumber);
Three *three = [[Three alloc] init];
return three;
} else if (pageNumber >= 2) {
return nil;
} else {
return nil;
}
}
Presumibilmente 'pageNumber' viene decrementato nel corrispondente' pageViewController:. ViewControllerBeforeViewController : "Quando dici" l'app pensa che sia a pagina 7 ", intendi che quando guardi a' pageNumber' dopo una serie di swip molto veloci, è impostato su 7? Quale vista viene visualizzata a quel punto? –
Sì, è corretto.Se si scorre molto rapidamente, il numero intero aumenta di molto, ma le pagine non si girano più rapidamente, causando l'intero e il numero effettivo della pagina fuori sincrono, a volte di una quantità elevata. –
Ma , dal momento che stai restituendo 'nil' qui ogni volta che' pageNumber> = 2', e non lo cambia, dove altro è 'pageNumber' essere incrementato? Cosa dovrebbe essere visualizzato? E cosa viene effettivamente visualizzato? –