2013-07-04 113 views
0

我需要允許我的用戶在iPad應用程序的文檔目錄中滾動縮略圖列表。當他們點擊其中一個縮略圖時,我需要知道哪一個被點擊(或者讓它調用一種方法,基本上是同一件事)。滾動縮略圖列表

我知道如何將縮略圖放在文檔目錄中,並且如何從那裏讀取它們。但我不確定哪個小部件最適合顯示內容。它是UITableView嗎? CCScrollLayer? CCMenuAdvanced?還有別的嗎?

+0

我會使用UITableView,以便單元應該重用自己,而不是與許多UIImages的開銷內存。 – diegotrevisan

+0

@ sp4rkbr你能展示一個代碼示例嗎? – Eddy

回答

0

CCScrollLayer不起作用以及UIScrollView

我使用視圖CCdirector添加UIkit

UIScrollView *scrollView = [UIScrollView alloc] init]; 
[[[CCDirector sharedDirector] view] addSubview:scrollView]; 

或添加UITableView

0

採取一個數組縮略圖所有路徑,讓我們稱之爲pathsArray

NSArray *pathsArray = [seld getPathsForAllImages];

現在實行UITableViewDataSource和的UITableViewDelegate:

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [pathsArray count]; 
} 

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *cellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

    if (cell == nil) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier]; 
    } 

    NSString *pathForImage = [pathsArray objectAtIndex:indexPath.row]; 
    cell.imageView.image = [UIImage imageWithContentsOfFile:pathForImage]; 

    return cell; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *pathForImage = [pathsArray objectAtIndex:indexPath.row]; 
} 
+0

你怎麼稱呼這個? – Eddy

+0

我的意思是從cocos2d項目中調用它。 – Eddy

+0

我不知道,你沒有提到你的問題上的cocos2d。抱歉。 – diegotrevisan

0

我有各種各樣的問題,一個覆蓋在cocos2d項目上的UIScrollView。即使有所有建議的黑客,如果一個框架在cocos2d中花費太長時間,UIScrollView也會停止正常工作。我懷疑這也會發生在UITableView上。

爲了解決我自己的問題,我創建了一個自定義ScrollNode類。這真的很容易使用:

// create the scroll node 
ScrollNode *scrollNode = [ScrollNode nodeWithSize:CGSizeMake(size.width, size.height)]; 
[self addChild:scrollNode]; 

// Generate some content for the scroll view 
// add it directly to scrollView, or to the built in menu (scrollView.menu) 
[scrollNode.menu addChild:yourMenuItem]; 

// Set the content rect to represent the scroll area 
CGRect contentRect = [scrollNode calculateScrollViewContentRect]; 
[scrollNode setScrollViewContentRect:contentRect];