2014-02-21 21 views
4

關閉這個問題剛纔看到我面對一個嚴重的問題,在過去兩天重複之前。獲得索引號UIpageviewController緩慢,而使用自定義的PageControl

我下面UIPageViewController with storyboards tutorial

我想發展我UIPageviewController。我必須展示一些用戶照片。我不想在底部顯示apagecontrol,所以我創建了一個自定義頁面控件。當我嘗試索引設置爲它不能正常工作的UIPageControl - 得到一些延遲一些時間達到第5頁只有它的更新,使得數目不正確

這是我的數據源:

-(UIViewController*)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 
{ 

    NSUInteger index = ((BMEnlargePhotoPageView*) viewController).pageIndex; 
    [self.enlargePhotoPageControl setCurrentPage:index]; 

    if((index == 0) || (index==NSNotFound)){ 

     return nil; 

    } 
    index--; 



    return [self viewControllerATindex:index]; 


} 




-(UIViewController*)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 

    NSUInteger index = ((BMEnlargePhotoPageView*) viewController).pageIndex; 
    [self.enlargePhotoPageControl setCurrentPage:index]; 


    if(index==NSNotFound){ 

     return nil; 
    } 

    index++; 


    if(index==[self.userImages count]) 
    { 
     return nil; 
    } 


    return [self viewControllerATindex:index]; 

} 


- (BMEnlargePhotoPageView*)viewControllerATindex:(NSUInteger)index 
{ 
     if(([self.userImages count]==0) || (index >= [self.userImages count])){ 

       } 

    BMEnlargePhotoPageView *PageContentViewControl = [self.storyboard instantiateViewControllerWithIdentifier:@"EnlargePhoto"]; 

    PageContentViewControl.imageFIle =self.userImages[index]; 
    PageContentViewControl.pageIndex = index; 


    return PageContentViewControl; 

} 

我的其他問題在於我想查找當前可見照片的索引ID,因此我也無法正確使用 - 延遲的值並且不正確。

注意:當我使用動畫頁面滾動一切運作良好,但在滾動動畫它得到延遲,但我想顯示它作爲滾動只有我試過很多SO激光沒有得到我的問題一些指南或我做任何錯誤。

回答

10

長挫折一週後終於發現了一個很好的與iOS7和唐心靈回答我的問題BCZ答道,所以我認爲沒有人來填補空白。

在UIPageViewController有委託所以在這個命名didFinishAnimating:有可翻完全或部分因此使用BOOL可以檢查標識您的網頁,當你使用,甚至動畫scroll這將是一個非常有用的功能BOOL。你的代碼是這樣

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

    if(completed){ 

     COntentViewController *enlarge =[self.pageViewController.viewControllers lastObject]; 
     self.enlargePhotoPageControl.currentPage = enlarge.pageIndex; 

    } 

} 

在這最後一個對象持有你一次發送的內容如果部分滾動BOOL不會得到真正的頁面則表示,如果完全滾動的頁面,這將幫助你那些誰想要使用自定義頁面控件。它對我的工作,以及我如何預期設置頁面控制索引,當頁面完全滾動,除非頁面指標不會被設置。它仍然是最後一頁數thx如果我犯了任何錯誤,請糾正我自己,甚至一些好方法。

+0

你有viewcontrollers數組或只有一個viewcontroller? – 2015-09-18 04:36:09

+0

這是有效的,但是由於某種原因,動畫是「延遲」的,就好像您使用的是原生頁面控件(可通過實現頁面控制器委託來設置)。 – Pochi