Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone sCollectionView委托问题_Iphone_Objective C - Fatal编程技术网

Iphone sCollectionView委托问题

Iphone sCollectionView委托问题,iphone,objective-c,Iphone,Objective C,SSCollectionView控件有问题,它是SSToolkit中NSTableView的子类。出于某种原因,除了-(sCollectionViewItem*)collectionView:(sCollectionView*)aCollectionView itemForIndexPath:(NSIndexPath*)indexPath之外的所有委托都被调用。即使此委托是@必需的,删除它也不会导致异常。在你问之前,是的,下面的数组中都有数据 我已经检查了数据源/委托是否在任何阶段变为nil,但

SSCollectionView
控件有问题,它是SSToolkit中
NSTableView
的子类。出于某种原因,除了
-(sCollectionViewItem*)collectionView:(sCollectionView*)aCollectionView itemForIndexPath:(NSIndexPath*)indexPath
之外的所有委托都被调用。即使此委托是
@必需的
,删除它也不会导致异常。在你问之前,是的,下面的数组中都有数据

我已经检查了数据源/委托是否在任何阶段变为
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];
}
这称为fine,视图出现,但没有数据

永远不会调用此方法:

- (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;
}

我不认为这是一个bug-我错过了什么吗?

如果您的收藏视图中没有任何项目,则不会调用此功能。确保实现了以下
sCollectionViewDataSource
方法并返回大于零的值

- (NSUInteger)collectionView:(SSCollectionView *)aCollectionView numberOfItemsInSection:(NSUInteger)section
此外,请确保还实现了以下
sCollectionViewDelegate
方法,以便正确显示项目

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

如果它是视图控制器中的唯一视图,我建议您使用
sCollectionViewController
,因为它将为您处理大量的粘合代码。

尝试添加
-(CGSize)集合视图:(sCollectionView*)集合视图项大小选项:(NSUInteger)部分:
视图加载之前的
。。不知道为什么,但我觉得这样很有效

哇!开发人员回答:D我已经实现了这两个,它们不会返回零。为了检查,我甚至实现了一条日志消息来确认这一点。因此我感到困惑。我做了一些移动,现在我被告知我不会告诉它项目的大小,即使我也实现了这个委托。奇怪,我现在确实让它工作了。但对于单元格样式,只有sCollectionViewItemStyleImage起作用,但我需要字幕。为什么不行?你是什么意思?在
init
中设置委托和数据源?