2012-03-05 26 views
0

我實現使用重複的最終頁面無限的UIScrollView。具體而言,我有3個ViewControllers其觀點我添加爲子視圖的UIScrollView的內容。因此,實際上,所述的UIScrollView內容看起來像下面(V1 = ViewController中的視圖1,V2,視圖控制器的視圖2,V3 = ViewController中的視圖)無限的UIScrollView使用重複尾頁

UIScrollView的內容: [V3] [V1] [V2] [V3] [V1 ]

當從V2向右用戶滾動至V3到V1,我使用「scrollRectToVisible」到滾動型轉移到V1的第二位置,使得它似乎無窮。同樣地,當從V2向左用戶滾動到V1至V3,我在第二到最後的位置轉移到滾動視圖V3。

Codewise,這看起來是這樣的:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)sender {  

    if (scrollView.contentOffset.x == 0) {   
     // user is scrolling to leftwards and has reached the position 0 of the scrollview   
     [scrollView scrollRectToVisible:CGRectMake(960,0,scrollView.frame.size.width,scrollView.frame.size.height) animated:NO];  
    }  
    else if (scrollView.contentOffset.x == 1280) {   
     // user is scrolling rightward and has reached the last position of the scrollview   
     [scrollView scrollRectToVisible:CGRectMake(320,0,scrollView.frame.size.width,scrollView.frame.size.height) animated:NO]; 
     } 
    } 
} 

我這裏的問題是,ViewControllers在他們UITableViews。例如,V1有一個UITableView。如果用戶已經能排在V1的UITableView中的10,我相信我會需要到的UITableView的狀態滾動視圖的V1視圖之間進行同步。

用戶只能看到最右邊的[V1]爲分秒或當他們只是半拖動滾動視圖,但他們仍然可以注意到,如果狀態未同步,它不是同一個TableView。

有沒有辦法解決這個問題?我認爲的一種方式就是保存狀態,然後更新所有V1,以便它們顯示相同的內容。

是否有可能有兩個UITableView的對象自動鏡像對方不知何故?

謝謝!

回答

1

你說:

如果用戶已經能排在V1的UITableView中的10,我相信我會需要到的UITableView的狀態滾動視圖的V1視圖之間進行同步。

這意味着您有幾個相同的V1 ViewController實例。

是否有可能有兩個UITableView對象自動鏡像對方?

是的,在NSUserDefaults上使用NSNotificationCenter應該可以做到,但也許你可以做更有效的事情。

而不是使用

- (void)scrollViewDidEndDecelerating:(UIScrollView *)sender 

的,你可以試用一下

- (void)layoutSubviews 

重新安排只有3 VC(每類一個實例)在一定條件下(通常移動VC已經完全從屏幕上消失)。因此,您將節省2個VC,並且不必處理同一類的同步實例。

蘋果發佈了一個關於無限滾動視圖的偉大視頻(WWDC 2011,Session 104 - 高級滾動視圖技術)。

希望這會有所幫助。祝你好運。

+0

謝謝,我會試試這個! – kurisukun 2012-03-06 00:19:25