2013-07-18 38 views
0

問題在於,當您翻轉3頁或4頁後,它開始更新當前頁碼,然後開始更新當前頁碼,從1,2,3,4 ...開始..這是錯誤的。如果你開始倒序翻頁讓我們假設從12開始顯示13,然後從下一頁開始以相反的順序更新當前頁碼。在pageviewcontroller動畫完成後更新當前頁碼

- (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)]; 
} 

請幫助如何解決這個更新當前頁碼從一開始,也是在相反的順序。

編輯:

去除

if (!completed) { 

return; 
} 

現在它翻轉第一頁後更新,但現在經過轉彎時更新從20 0當前頁碼,然後20的1等,但仍按相反的順序翻頁,它仍然更新當前頁碼,然後按相反順序更新。

感謝您的幫助。

回答

0

根據我的經驗(並且在過去的WWDC會話視頻中專門爲此課程確認),管理UIPageViewController中頁碼的最佳方式是直接在頁面視圖中將頁碼信息作爲屬性存儲控制器(即在包含要顯示的單個頁面的視圖控制器中)。

然後,如果要顯示帶頁碼的通用狀態欄,只需獲取UIPageViewController的viewControllers屬性,該屬性將根據UIPageViewController設置返回一個或兩個視圖控制器。

因此,在僞代碼,當頁面視圖控制器詢問這是新的視圖控制器,以顯示你的代碼它的數據源: - 將獲得當前視圖控制器(S) - 將它(們)取頁碼 - 將計算下一頁或上一頁頁碼(取決於頁面捲曲/滑動方向) - 將向數據源請求新計算的頁碼視圖控制器,並將分配給其頁碼屬性新值

通過這種方式,您可以保護您免受奇怪的動畫行爲,並且您無需將全局「currentIndex」保留在內存中,這可能會導致問題,就像您經歷的那樣。