Estoy creando un diseño personalizado collectionView, algo así como en la documentación aquí. Tengo algunas vistas de texto fuera de la colección Vista que me gustaría llenar dependiendo del elemento actual en el medio de la pantalla, sé que puedo obtener los elementos visibles actuales usando {{X0 }}. Mi pregunta es ¿cómo puedo llegar al evento scrollingEnded o algo similar para poder llamar a CollectionView.IndexPathsForVisibleItems allí y obtener los datos que necesito para completar los campos de texto?

Intenté anular ScrollAnimationEnded en MyCustomCollectionViewSource pero por alguna razón nunca se activa. También pensé en usar potencialmente un SupplementaryView pero no pude encontrar ningún código de muestra que se usara con diseños personalizados.

0
cymenx 17 jul. 2020 a las 16:17

2 respuestas

La mejor respuesta

Usé DecelerationEnded y eso resolvió mi problema.

0
cymenx 23 jul. 2020 a las 12:44

Mi pregunta es ¿cómo puedo llegar al evento scrollingEnded o algo similar para poder llamar a CollectionView.IndexPathsForVisibleItems allí y obtener los datos que necesito para completar los campos de texto?

Hay un método Scrolled que se utiliza para lograr eso (de acuerdo con ContentOffset para verificar si es necesario cargar más), este método se necesita dentro de UICollectionViewDelegate.

public class MyCollectionDelegate : UICollectionViewDelegate {
    #region Computed Properties
    public CollectionView mCollectionView { get; set;}
    #endregion

    #region Constructors
    public MyCollectionDelegate (CollectionView collectionView)
    {
        // Initialize
        mCollectionView = collectionView;
    }
    #endregion

    public override void Scrolled(UIScrollView scrollView)
    {
        //base.Scrolled(scrollView);
        if (scrollView.ContentOffset.Y + scrollView.Frame.Size.Height - scrollView.ContentSize.Height > 30)
        {
            // load more data 
        }
}

Luego configure Delegate para CollectionView de la siguiente manera:

 this.collectionView.Delegate =  new MyCollectionDelegate(this.collectionView);
0
Junior Jiang - MSFT 20 jul. 2020 a las 05:53