Gibt es eine Möglichkeit zu wissen, wann der Index auf UITableView tatsächlich verwendet?

StackOverflow https://stackoverflow.com/questions/2762905

  •  02-10-2019
  •  | 
  •  

Frage

Gibt es eine Möglichkeit zu wissen, wann der Index auf UITableView tatsächlich verwendet wird? Ich kann keine Methoden in der Apple-Dokumentation finden, aber ich habe mich gefragt, ob jemand etwas weiß. Ich mag im Grunde eine Animation in meiner Tabelle Ansicht zu machen, dass Änderungen je nach Abschnitt im Index ausgewählt ist, und ich habe keine Ahnung, wie dies zu tun, ohne die Tabellenansicht Index zugreifen.

Jede Hilfe sehr geschätzt.

Danke.

War es hilfreich?

Lösung

  1. Der UITableViewDataSource Delegatmethode -tableView:sectionForSectionIndexTitle:atIndex: gibt einen NSInteger den vom Abschnittsindex ausgewählten Abschnitt repräsentiert. Überschreiben Sie diese Methode in welcher auch immer Klasse ist die Datenquelle delegiert (wahrscheinlich die Tabelle View-Controller).

  2. eine Eigenschaft im View-Controller einrichten, ein NSInteger genannt selectedSectionIndex. Sein Wert wird innerhalb der vorgenannten Delegatmethode eingestellt.

  3. Schließlich einen Beobachter im View-Controller eingerichtet, die darauf wartet, Änderungen an dieser Eigenschaft und löst den gewünschten Code, wenn eine Änderung beobachtet bekommt.

In Ihrem -viewWillAppear: Verfahren, zum Beispiel:

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

In Ihrer -viewWillDisappear: Methode austragen Beobachter:

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

Es ist wichtig, dies so zu tun, dass die -dealloc Methode keine Ausnahme werfen.

Schließlich die Beobachter Methode einrichten, etwas zu tun, wenn es eine Änderung zu selectedSectionIndex ist:

- (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
    }
}

Der Schlüsselwert Observing Muster ist eine gute, allgemeine Art und Weise zu Trigger etwas, wenn ein Wert des Objekts irgendwo ändert. Apple hat eine gute schriftliche "Quick-Start" Dokument dass einleitet dieses Thema.

Andere Tipps

Nicht eine sehr elegante Lösung, aber Sie können in der Lage sein UITableView Unterklasse und für sie in - (void)didAddSubview:(UIView *)subview;, als es zuerst erscheint zu beobachten. Dies setzt voraus, dass es direkt an den UITableView hinzugefügt wird und nicht einer seiner Subviews oder Superview, und dass Sie die zusätzliche Ansicht als Index erkennen kann. Es ist auch möglich, dass nach dem ersten Mal wird hinzugefügt, wird es ausgeblendet und statt wieder entfernt und hinzugefügt wird angezeigt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top