我遇到了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;
}
我不认为这是一个错误 - 我错过了什么?
答案 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
..不知道为什么但这样对我有用