2013-07-18 2 views
0

Проблема заключается в том, что он начинает обновлять текущий номер страницы после того, как вы включите 3 или 4 страницы, после чего начнется обновление текущего номера страницы, начиная с 1, 2, 3, 4, ... .. это неправильно. и если вы начнете в обратном порядке перевертывать страницу, давайте предположим, что с 12, тогда она отображает 13, а затем со следующей страницы начинает обновление текущего pagenumber в обратном порядке.Обновить текущий номер страницы после завершения анимации просмотра веб-сайта

- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed{ 


if (!completed) { 

    return; 
} 
    if (currentIndex<totalPages -1){ 

    [self displaycurrentIndex:currentIndex + 1]; 

    }else if (currentIndex>totalPages + 1){ 

      [self displaycurrentIndex:currentIndex - 1]; 
    } 
} 

- (void) displaycurrentIndex:(NSUInteger)currentIndex { 

self.navigationItem.title = [NSString stringWithFormat: 
          @"Page %i of %i", 
          currentIndex + 1, 
          CGPDFDocumentGetNumberOfPages(PDFDocument)]; 
} 

Пожалуйста, помогите как исправить это обновление текущего номера страницы с самого начала, а также при движении в обратном порядке.

Edit:

После удаления

if (!completed) { 

return; 
} 

Теперь это обновление после включения первой страницы закончена, но теперь обновляется номер текущей страницы от 0 до 20, а затем 1 из 20 и так далее, но все еще при повороте страницы в обратном порядке, он все еще обновляет текущий pagenumber в прямом, а затем в обратном порядке.

Спасибо за помощь.

ответ

0

Из моего опыта (а также подтверждено в предыдущих сеансах сеанса WWDC, посвященных этому классу), лучший способ управлять номерами страниц в UIPageViewController - хранить в качестве свойства информацию о номере страницы непосредственно в представлении страницы контроллер (который находится в контроллере представления, который содержит одну страницу, которую вы хотите показать).

Затем, если вы хотите показать строку состояния общего назначения с номером страницы, вы просто получаете свойство viewControllers UIPageViewController, которое возвращает один или два контроллера представления в зависимости от настройки UIPageViewController.

Таким образом, в псевдо-коде, когда контроллер просмотра страницы запрашивает источник данных, которые являются новыми контроллерами представления для отображения кода: - получат текущий контроллер (ы) вида - будет получать из него (них) номер страницы - рассчитает следующий или предыдущий номер страницы (в зависимости от направления завивки страницы/прокрутки) - запросит источник данных для новых вычисляемых контроллеров просмотра номеров страниц и присвоит их свойству номер страницы новое значение

Таким образом, вы защищены от странного поведения анимации, и вам не нужно хранить в памяти глобальное «currentIndex», которое может привести к проблемам, как вы это пережили.

Смежные вопросы