2009-06-29 9 views

Antwort

6

Das ist schwieriger, als es sein soll, weil Apple bietet keine NSProgress Indicator Cell. Tabellen- und Gliederungsansichten unterstützen zwar die Idee, dass benutzerdefinierte Zellen in ihnen angezeigt werden, sie sind jedoch nicht so eingerichtet, dass sie benutzerdefinierte Unteransichten problemlos unterstützen.

So wird der Trick, wie erhalten Sie eine vollständige NSProgressIndicator-Ansicht zur Anzeige und Animation an der gewünschten Stelle in Ihrem Fenster, ohne die Möglichkeit, es tatsächlich in der Tabellenansicht Zeile zu installieren?

Der Trick, den ich verwendet habe, ist, den NSProgressIndicator als Unteransicht der Gliederung oder Tabellenansicht selbst zu installieren. Verwenden Sie die frameOfCellAtColumn: row: -Methode, um den Ort zu finden, an dem die Unteransicht hinzugefügt werden soll, damit sie wie "in der Zeile" aussieht. Sie können dann Ihre Fortschrittsanzeige an dieser Position der Gliederungsansicht positionieren. Wenn Sie mit dem Drehen der Fortschrittsanzeige fertig sind, möchten Sie sie wahrscheinlich nicht mehr anzeigen. Entfernen Sie sie einfach aus dem Superview und verwerfen Sie sie.

Sie sollten sicherstellen, dass Sie die erforderlichen Autosizing-Flags auf der Fortschrittsanzeige gesetzt haben, sodass sie in der richtigen Richtung schwebt, wenn/wenn die Größe der Gliederungsansicht geändert wird.

Ich bin mir sicher, es gibt andere Hacks wie diese, um das gewünschte Endergebnis zu erreichen. Ich glaube nicht, dass es einen super sauberen Weg gibt, diesen Trick zu vollbringen.

+0

Es ist eine ziemlich gute Lösung, aber manchmal kann Zellentext durch Auslassungspunkte getrimmt werden. So sollte die Zelle über 'externen' Indikator wissen, um eine Breite des Textes zu reduzieren: http://tinyurl.com/mkmfat – Stream

+0

Was ich tat, ist tatsächlich geben Sie den Bereich, wo ich erwarte, dass Fortschrittsindikatoren ihre eigene (leere) Spalte in erscheinen Der Tisch. Es ist ein wenig klobig, weil dieser Bereich der Tabelle "unbrauchbar" ist, aber es garantiert, dass legitimer Zelleninhalt sich nicht mit dem Fortschrittsanzeigebereich überlappt. – danielpunkass

+0

Sorry für Schmerzen im Nacken, aber Extra-Spalte ist keine sehr bequeme Lösung :) Ich mag eine Implementierung in Mail sehr verwendet, und Wien App in diesem Thread erwähnt verwendet ViewControl-Methode der Zelle, um die gleichen Ergebnisse zu erzielen. Ich werde versuchen, so zu gehen. – Stream

3

Vienna ist ein Open-Source- (Apache-Lizenz) Feed-Reader, der dies in seiner Quellenliste hat. Sie sollten sich die the Vienna source code anschauen, um zu sehen, wie sie es gemacht haben.

+0

Der Link für den Quellcode ist jetzt unter https://github.com/ViennaRSS/vienna-rss – jemeshsu

2

Die Implementierung von Viena ist nicht perfekt. Fügen Sie einen Feed zu einem Ordner hinzu, wenn dieser gerade geladen wird und die Fortschrittsanzeige diesen Ordner zusammenfasst. Sie werden sehen, dass die Fortschrittsanzeige immer noch am selben Ort läuft.

Verwandte Themen