6

UICollectionView在我的应用程序中实现了一个。我的问题是我需要选择(就像用户点击它一样)一个单元格programmatically。方法:

- (void)selectItemAtIndexPath:(NSIndexPath *)indexPath 
                     animated:(BOOL)animated 
               scrollPosition:(UICollectionViewScrollPosition)scrollPosition

那是UICollectionView类的一部分不是我需要调用的,因为此方法不调用:

- (void)collectionView:(UICollectionView *)collectionView 
        didSelectItemAtIndexPath:(NSIndexPath *)indexPath

它只是将selected单元格的属性设置为YES;

4

3 回答 3

9

是的,这是正确的行为。文档[selectItemAtIndexPath:animated:scrollPosition:]

此方法不会导致调用任何与选择相关的委托方法。

于 2014-01-17T08:38:38.453 回答
8

我打电话[self collectionView:yourView didSelectItemAtIndexPath:yourIndexPath]以编程方式选择一个单元格。但在方法中,单元格始终为零。当用户选择一个单元格时,这非常有效。

于 2013-06-13T00:23:19.597 回答
7

首先,您需要使目标单元格可见,否则[yourCollectionView cellForItemAtIndexPath:yourIndexPath]总是返回 nil。

// scroll to the cell
[yourCollectionView scrollToItemAtIndexPath:yourIndexPath
                           atScrollPosition:UICollectionViewScrollPositionBottom 
                                   animated:NO];

// call delegate method
[self collectionView:yourCollectionView didSelectItemAtIndexPath:yourIndexPath];

// now you have selected the cell and can do anything to it in the delegate method :-) 
于 2013-12-08T11:48:45.053 回答