2011-06-20 16 views
0

SSCollectionViewコントロールで、SSToolkitのNSTableViewのサブクラスに問題があります。何らかの理由で、- (SSCollectionViewItem *)collectionView:(SSCollectionView *)aCollectionView itemForIndexPath:(NSIndexPath *)indexPathを除くすべての代理人が呼び出されます。この代理人は@requiredですが、削除すると例外もありません。そして、あなたが尋ねる前に、すべての下の配列はデータを持っています。SSCollectionView代理人の問題

データソース/デリゲートがいずれの段階でもnilになっているかどうかを確認しましたが、そうではありませんので、私はうんざりです。ここで

は、私はビューを作成する方法は次のとおりです。

- (void)viewDidLoad 
{ 
    NSLog(@"ViewDidLoad"); 

    _titles = [[NSMutableArray alloc] init]; 
    _subtitles = [[NSMutableArray alloc] init]; 
    _thumbnails = [[NSMutableArray alloc] init]; 

    _collectionView = [[SSCollectionView alloc] initWithFrame:[UIApplication sharedApplication].keyWindow.frame]; 

    _collectionView.backgroundColor = [UIColor scrollViewTexturedBackgroundColor]; 

    [_collectionView setDelegate:self]; 
    [_collectionView setDataSource:self]; 

    [self.view addSubview:_collectionView]; 

    [_collectionView reloadData]; 
} 

これは、罰金と呼ばれ、ビューが表示されている - しかし、データのありません。

このメソッドが呼び出されることはありません:

- (SSCollectionViewItem *)collectionView:(SSCollectionView *)aCollectionView itemForIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"Delegate Called"); 

    static NSString *const itemIdentifier = @"itemIdentifier"; 

    SSCollectionViewItem *item = (SSCollectionViewItem *)[aCollectionView dequeueReusableItemWithIdentifier:itemIdentifier]; 

    if (item == nil) 
    { 
     item = [[[SSCollectionViewItem alloc] initWithStyle:SSCollectionViewItemStyleImage reuseIdentifier:itemIdentifier] autorelease]; 
    } 

    item.textLabel.text = [_titles objectAtIndex:indexPath.row]; 
    item.detailTextLabel.text = [_subtitles objectAtIndex:indexPath.row]; 
    item.imageView.image = [_thumbnails objectAtIndex:indexPath.row]; 

    return item; 
} 

私は、これはバグではないと思う - 私は何かを逃したのですか?

答えて

2

コレクションビューに項目がない場合は、呼び出されません。次のSSCollectionViewDataSourceメソッドが実装されていることを確認し、ゼロより大きい値を返します。

- (NSUInteger)collectionView:(SSCollectionView *)aCollectionView numberOfItemsInSection:(NSUInteger)section 

また、あなたの項目が正しく表示されますので、あなたにも、以下のSSCollectionViewDelegateメソッドを実装することを確認してください。

- (CGSize)collectionView:(SSCollectionView *)aCollectionView itemSizeForSection:(NSUInteger)section 

、それはあなたのためのグルーコードの多くの世話をしますので、それはあなたのビューコントローラで唯一の図であるならば、私はSSCollectionViewControllerを使用することをお勧めします。

+0

うわー私の作品はありません!開発者は答えました:D私はこれらの両方を実装しており、ゼロを返さない。チェックするために、私はそれを確認するログメッセージを実装しました。それゆえ、私は困惑しています。 – Pripyat

+0

そして、これら2つが呼び出されます。 – Pripyat

+0

私は少し動いていますが、今私はこのデリゲートを実装していますが、アイテムのサイズを教えていないと言われています。奇妙な – Pripyat

0

viewDidLoad前に、あなたの- (CGSize)collectionView:(SSCollectionView *)aCollectionView itemSizeForSection:(NSUInteger)section:を追加しようとする...なぜ知っているが、それはこのよう

+0

どういう意味ですか?デリゲートとデータソースを 'init'で設定しますか? – Pripyat