Frage

Ich habe ein NstableView mit zwei Spalten an einen NsarrayController. Eine Spalte ist an die angeordneten Objekte des Array -Controllers gebunden und zeigt eine Zeichenfolge an.

Ich möchte ein Bild in der anderen Spalte anzeigen, aber ich kann es einfach nicht zum Laufen bringen. Ich habe eine NSIMAGECELL in die Spalte gezogen und das Bild von Hand gesetzt, aber es wird nicht zur Laufzeit angezeigt. Ich habe doppelt überprüft und das Bild befindet sich in meinem Ressourcenverzeichnis.

Vermisse ich etwas? Was soll ich sonst noch tun, um dieses Bild erscheinen zu lassen?

War es hilfreich?

Lösung

Sie möchten also das gleiche Bild für jede Zeile angezeigt haben? Setzen Sie es deshalb "von Hand" ein? Dafür können Sie NstableViewDataSource -Methoden mit Bindungen mischen. Die Idee ist, dass Ihre String -Spalte wie gewohnt gebunden ist, aber Ihre Bildspalte ist nicht gebunden. Es hat seine Kennung (wie "imagecolumn"). Sie verwenden dann numberOfrowStableView: und TableView: ObjectValueFortableColumn: Zeile: So bereitstellen Sie die Objektzahl des Array -Controllers (so die richtige Anzahl von Zeilen) und geben einfach immer Ihr statisches Bild zurück, wenn es den Wert für die richtige Spalte prüft (die ID überprüfen für Ihren "Imagebild"), der sonst Null zurückgibt.

Wenn das Bild nicht statisch ist (dh, möchten Sie es als Indikator für irgendeine Art verwenden), können Sie die obige Methode verwenden (ein Bild basierend auf dem Wert zurückgeben) oder Bindungen. Um Bindungen zu verwenden, können Sie eine Eigenschaft zu jeder Klasse hinzufügen, die Ihr Array -Controller hält, wie "Status" (eine Nummer). Sie verwenden dann einen benutzerdefinierten nsvaluetransformer, der die Statusnummer in ein entsprechendes Bild umwandelt. Ihre Spalte wird an den Array -Controller -ArrangedObjects.status mit dem Werttransformator gebunden (siehe NSVALUETRANSFORMER FÜR DIE UHR - Sie müssen sie registrieren und dann den Namen verwenden). Das Ergebnis ist ein Bild in Ihrer Spalte, das einem bestimmten Status entspricht.

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