Pregunta

¿Hay una manera de saber cuando se utiliza en realidad el índice en UITableView? No puedo encontrar ningún método en la documentación de Apple, pero me preguntaba si alguien más sabe nada. Yo, básicamente, como para hacer una animación en mi opinión tabla que cambia en función de lo que se selecciona la sección en el índice, y no tengo ni idea de cómo hacer esto sin acceder al índice de vista de tabla.

Cualquier ayuda es muy apreciada.

Gracias.

¿Fue útil?

Solución

  1. El UITableViewDataSource método delegado -tableView:sectionForSectionIndexTitle:atIndex: devuelve un NSInteger que representa la sección seleccionada del índice de sección. Reemplazar este método en cualquier clase es el origen de datos delegado (probablemente su tabla vista controlador).

  2. Configurar una propiedad en el controlador de vista, una llamada NSInteger selectedSectionIndex. Su valor se establece dentro del método delegado antes mencionado.

  3. Por último, establecer un observador en la vista controlador, que espera a los cambios en esta propiedad y que desencadena su código deseado cuando un cambio se vuelve a observar.

En el método de -viewWillAppear:, por ejemplo:

[self addObserver:self forKeyPath:@"selectedSectionIndex" options:NSKeyValueObservingOptionNew context:nil];

En el método de -viewWillDisappear:, anular el registro del observador:

[self removeObserver:self forKeyPath:@"selectedSectionIndex"];

Es importante hacer esto para que el método -dealloc no produce una excepción.

Por último, establecer el método de observador a hacer algo cuando hay un cambio de selectedSectionIndex:

- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    if ([keyPath isEqual:@"selectedSectionIndex"]) { 
        // The section index changed, so trigger some cool animation
    }
}

El patrón de valor-clave de Observación es un bien, de manera general a algo de gatillo cuando el valor de un objeto cambia de lugar. Apple ha escrito un buen "de arranque rápido" documento que introduce este tema.

Otros consejos

No es una solución muy elegante, pero usted puede ser capaz de subclase UITableView y mire lo que ocurre en - (void)didAddSubview:(UIView *)subview; cuando primero se muestra. Esto supone que se añade directamente a la UITableView y no uno de sus subvistas o supervista, y que se puede reconocer el punto de vista agregado como el índice. También es posible que después de la primera vez que se añade que se oculta y se muestra en lugar de ser eliminado y se añade de nuevo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top