SSCollectionView委托问题

时间:2011-06-20 17:10:20

标签: iphone objective-c

我遇到了SSCollectionView控件的问题,这是来自SSToolkit的NSTableView的子类。出于某种原因,除了- (SSCollectionViewItem *)collectionView:(SSCollectionView *)aCollectionView itemForIndexPath:(NSIndexPath *)indexPath之外的所有代表都被调用。即使此委托是@required,删除它也不会导致任何异常。在你问之前,是的,下面的数组都有数据。

我已经检查过数据源/委托在任何阶段是否变为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 个答案:

答案 0 :(得分:2)

如果集合视图中没有项目,则不会调用此项。确保实现了以下SSCollectionViewDataSource方法并返回大于零的值。

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

此外,请确保您实施以下SSCollectionViewDelegate方法,以便正确显示您的商品。

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

如果它是视图控制器中唯一的视图,我建议使用SSCollectionViewController,因为它会为你处理很多胶水代码。

答案 1 :(得分:0)

尝试在- (CGSize)collectionView:(SSCollectionView *)aCollectionView itemSizeForSection:(NSUInteger)section:之前添加viewDidLoad ..不知道为什么但这样对我有用