He implementado un UICollectionView en mi aplicación. Mi problema es que tengo que seleccionar (como si el usuario ha tocado en una celda programmatically.
El método:

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

Que es parte de la UICollectionView clase no es lo que necesito para llamar, ya que este método no llame:

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

Se establece el selected propiedad de la celda a YES;

¿Qué acerca de la llamada al método a sí mismo después de haber seleccionado tu celular? Usted podría llamar a [auto collectionView:yourView didSelectItemAtIndexPath:yourIndexPath];
Sí. lo consiguió. gracias!
Tal vez esta respuesta le ayudará a stackoverflow.com/questions/13177201/…
Sí. Gracias! Yo sabía acerca de la didSelectItemAtIndexPath uno, pero yo estaba buscando un método que no es parte od el UICollectionView Delegate Protocol. Me lo imaginé. Todo funciona bien ahora.

OriginalEl autor Nikola Kirev | 2012-12-13

3 Comentarios

  1. 7

    Estoy llamando [self collectionView:yourView didSelectItemAtIndexPath:yourIndexPath] mediante programación, seleccione una celda. Pero en el método de la célula es siempre nulo. Esto funciona perfectamente bien cuando el usuario selecciona una celda.

    o en swift puede utilizar: collectionView.delegate?.collectionView!(collectionView, didSelectItemAtIndexPath: someIndexPath)
    Que funciona, es una mala práctica, aunque para llamar a los métodos de delegado directamente (a la Vista de Colección debe invocar el método en su delegado como Apple recomienda). Como @leviatán mencionó que «[selectItemAtIndexPath:animación:scrollPosition:] » no invocar el método delegado de modo que hay mejores formas de evitar eso.

    OriginalEl autor Shirish Kumar

  2. 9

    Sí, este es el comportamiento correcto. Documentación para [selectItemAtIndexPath:animated:scrollPosition:] dice:

    Este método no causa ningún tipo de selección relacionados con los métodos de delegado a
    ser llamado.

    OriginalEl autor leviathan

  3. 7

    Primer lugar, usted necesita para hacer que la celda objetivo visible, de lo contrario [yourCollectionView cellForItemAtIndexPath:yourIndexPath] siempre devuelve 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 :-) 
    Mi celular es siempre visible, pero el cellForItemAtIndexPath siempre devuelve nil (incluso después de que la llamada scrollToItemAtIndexPath

    OriginalEl autor nopopon

Dejar respuesta

Please enter your comment!
Please enter your name here