2014-01-27 65 views
0

我正在製作一個iOS應用程序,我需要展示某種水平滾動視圖,其中包含一些表格視圖。它必須這樣看:在ScrollView或UICollectionView中的UItableViews?

https://dl.dropboxusercontent.com/u/53942814/Pic1.png https://dl.dropboxusercontent.com/u/53942814/Pic2.png

當用戶刷卡向左或向右對應表視圖來顯示。

我發現兩種方法來做到這一點:

  1. 一個UIScrollView與UITableViews
  2. 一個UICollectionView。

有沒有人有想法什麼是最好的方式,以及如何實現它?

+0

定義「最佳」? – nhgrif

+1

對此方案使用UIPageControl。 –

+0

[UITableview with UIPageControl?]可能的重複?(http://stackoverflow.com/questions/13312119/uitableview-with-uipagecontrol) – calimarkus

回答

0

我已經實現了我的代碼複製類似的android控制完全一樣的...

請參閱我的一些代碼的一部分,你會通過添加視圖來UIScrollView中得到一些想法

我都做到了。 二手2個scrollviews一個用於標題和一個用於表

1.添加表視圖來滾動型爲表

您做生意= 1;

for (Page *page in pageArray) 
{ 
    UIStoryboard *mystoryboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil]; 
    PageContentViewController *contentViewController = [mystoryboard instantiateViewControllerWithIdentifier:@"pageContentViewController"]; 

    contentViewController.detailsDictionary = page.deviceDetailDictionary; //assigning dictionary will use as table data source 

    /* Content page's x position calculation */ 

    // Formula: xPos = scrollViewWidth * (pageNo -1) 
    // Where, 
    // pageNo starts with 1 

    int xPos = self.detailScrollView.frame.size.width * (pageNo -1); 
    contentViewController.view.frame = CGRectMake(xPos, 0, self.detailScrollView.frame.size.width, contentViewController.view.frame.size.height); 
    pageNo ++; 

    [self addChildViewController:contentViewController]; 
    [self.detailScrollView addSubview:contentViewController.view]; 
    [contentViewController didMoveToParentViewController:self]; 
} 

2.添加UILabels到titleScrollView

只要檢查這個公式來標題的UILabel視圖添加到頂部滾動視圖

// Formula: xPos = 75 + 10 * pageNo + (pageNo -1) * 150; 
    // Where, 
    // pageNo starts with 1 
    // 75 = Left margin of first title 
    // 10 = Space between two labels 
    // 150 = Width of label 

滾動型的3.使用委託方法(其中你添加了表格)來處理滑動

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView; 
{ 
    CGFloat pageWidth = self.detailScrollView.frame.size.width; 

    //1. Calculate page no. if 50 percent or more area of any page visible make it as current page 
    int pageNo = floor((self.detailScrollView.contentOffset.x - pageWidth/2)/pageWidth) + 2; 

    //2. Make only current page (calculated in 1.) visible by scrolling to that page in detailScrollView 
    //Formula : xPos = pageWidth * (pageNo -1) 
    CGRect frame = CGRectMake(pageWidth * (pageNo -1), 0, pageWidth, 50); 
    [self.detailScrollView scrollRectToVisible:frame animated:YES];//OR set content offset 

    //3. Make title visible of current page by scrolling to that title in titleScrollView 
    //Formula : xPos = (pageWidth/2) * (pageNo -1) 
    CGRect titleFrame = CGRectMake(160 * (pageNo -1), 0, pageWidth, 10); 
    [self.titleScrollView scrollRectToVisible:titleFrame animated:YES];//OR set content offset 

    //Fade effect for non current titles 

    //Set all page title alpha to low value 
    for (UILabel *title in pageTitleArray) 
    { 
     [title setAlpha:0.5]; 
    } 

    //set current page alpha to 1 
    UILabel *title = [pageTitleArray objectAtIndex:pageNo -1]; 
    [title setAlpha:1]; 
} 

守則3照顧移動到下一個/上一個頁面上刷卡動畫

希望這將是很好的出發點,你的...

+0

謝謝,這對我來說工作得很好!) – benchman

+0

我發現有關此方法的一件事。 https://dl.dropboxusercontent.com/u/53942814/Pic2.png在表視圖之前,在滾動視圖中粘貼了一些空間。我花了幾個小時試圖確定它來自哪裏。最後找到原因。我使用導航控制器瀏覽我的應用中的視圖。這個空間等於導航控制器欄的空間。當我刪除導航控制器時,一切都會好起來。但我真的需要導航。控制器。如何處理這個問題? – benchman

+0

沒有得到任何附加的PNG。看到這個演示項目https://github.com/AdityaDeshmane/iOSCustomPageControllerDemoProject這就是我如何使用它。 –