2011-12-20 37 views
1

我在我的應用程序中使用了PhotoScroller中已更改的示例代碼。我有圖像縮略圖的表格視圖,我可以將填充該表格的圖像數組傳遞給PhotoViewController。目前,PhotoViewController從數組中的第一個圖像開始,我可以來回滾動。這適用於Apple的示例代碼。如何更新iOS PhotoScroller示例代碼

現在我想要做的是點擊一個帶有縮略圖的表格單元格,並開始滾動該圖像的索引處的圖像。例如:如果我在表格中有5個圖像,然後點擊圖像#3,我希望PhotoViewController中的第一個圖像是第三個圖像,並且可以向左或向右滾動到#2或#4。希望這是有道理的。

我在PhotoViewController中看到每個圖像都添加了子視圖。任何方式我都可以告訴它「跳轉到查看#3」而不破壞其他視圖或它們的整體外觀順序?任何想法或建議是受歡迎的。代碼可以在iOS開發者網站上找到PhotoScroller示例代碼。

好的,我在漫無邊際......在此先感謝您的幫助!

回答

1

我這樣做的方法是有一個名爲startingPage的變量,它被設置在照片視圖控制器的初始化器中。然後,在創建頁面時,首先爲滾動視圖設置正確的偏移量。

所以在PhotoScroller的情況下,將在loadView。像這樣:

- (void)loadView 
{ 
    // Step 1: make the outer paging scroll view 
    CGRect pagingScrollViewFrame = [self frameForPagingScrollView]; 
    pagingScrollView = [[UIScrollView alloc] initWithFrame:pagingScrollViewFrame]; 
    pagingScrollView.pagingEnabled = YES; 
    pagingScrollView.backgroundColor = [UIColor blackColor]; 
    pagingScrollView.showsVerticalScrollIndicator = NO; 
    pagingScrollView.showsHorizontalScrollIndicator = NO; 
    pagingScrollView.contentSize = [self contentSizeForPagingScrollView]; 
    pagingScrollView.delegate = self; 
    self.view = pagingScrollView; 

    // Set the content offset of the scrollview 
    CGRect bounds = pagingScrollView.bounds; 
    CGPoint contentOffset = CGPointMake(bounds.size.width * startingPage, 0.0f); 
    [pagingScrollView setContentOffset:contentOffset animated:NO]; 

    // Step 2: prepare to tile content 
    recycledPages = [[NSMutableSet alloc] init]; 
    visiblePages = [[NSMutableSet alloc] init]; 
    [self tilePages]; 
} 
+0

你好,馬特! 感謝您的幫助。我嘗試了你的解決方案,但我得到的行爲是一個空白的初始視圖,無論我的值爲startingPage(或在我的情況下selectedPhotoIndex)。如果我「滾動」該空白頁,然後我得到我的數組中的第一個圖像。 PhotoViewController的其餘部分與源代碼中的不同之處在於「Image Wrangling」部分已更新,以便使用我的圖像數組。我試圖發佈自己的代碼,但似乎只有有限數量的字符可以在評論中輸入...... – RodneyJ725

+0

好吧,讓我稍後再看看它 - 我會試着提供一個例子來展示你如何用PhotoScroller代碼來做。對不起,我最初的代碼一定不夠,那麼:-(。 – mattjgalloway

+0

只是爲了試驗,我發現如果我設置「動畫」爲YES,突然間我得到正確的行爲去正確的圖像,雖然有一個超級快將其設置回NO,我得到了上面描述的行爲(空白,如果滾動空白頁面,無論如何都會轉到第一張圖片) – RodneyJ725