Frage

Ich verwende Bindungen zum ersten Mal auf einem Kerndatenspeicher mit einer zu vieler Beziehung auf meinen Entitäten, ich zeige die Untervorgaben mit einem NSCollectionView, das ein Bild und einen Titel zeigt.

Objekte sind:

generasacodicetagpre.

Steuerelemente sind:

generasacodicetagpre.

Ich habe den NSIMACTEView auf das Sammlungsansicht-Element mit dem Modellschlüsselpfad als repräsentativobjekt.imagepath und einen Werttransformator gebunden.Das alles funktioniert gut.

Was ich tun möchte, ist, dass er einen Doppelklick auf den Artikel im Code erkennen und den Zugriff auf das Darstellungsobjekt des doppelklicken Elements erlangt.

Ich habe versucht, NSIMAGEView zu unterklappen, und überschreiben Sie das Mausereignis für ein Click-Ereignis, das funktioniert, aber dann konnte ich nicht auf den Zugriff auf den Kontext von ManagedObject und das ausgewählte Objekt von hier aus erhalten.Ich bin nicht sicher, wie ich das den richtigen Weg tun soll.

Danke für jede Hilfe, ich verstehe, dass dies grundlegende Sachen ist, und ich muss mit der Bindings-Implementierung etwas Falsches tun.

War es hilfreich?

Lösung

Implementieren Sie Unterklasse für Ihre Sammlungsansicht ein Element, sagen Sie CustomCollectionViewItem und ändern Sie die Klasse der Sammlungsansicht in der IB.

Unterklasse Sie nsimageView Auch in dieser Klasse handhaben Sie den Doppelklick.Erstellen Sie ein schwaches Referenz-Delegat-Objekt und binden Sie dieses Delegierte an Ihr CustomCollectionViewItem in IB.

Nun, wenn Sie doppelklicken, klicken Sie auf das Delegat, um eine beliebige Methode Ihrer CustomCollectionViewItem anzurufen, und in CustomCollectionViewItem haben Sie Zugriff auf das Dargestellteobjekt.

Nun, das Problem ist, wie Sie dies weiterhin mit der tatsächlichen Controller-Klasse weitergeben können.Sie müssen erneut ein schwaches Referenzdelegat in CustomCollectionViewItem erstellen und dieses Delegierte an die Hauptcontroller-Klasse in IB binden.

so, wenn CustomCollectionViewItem einen Aufruf von nsimageview subclass empfängt, dann rufen Sie die Hauptcontroller-Klassenmethode an und übergeben Sie das Darstellungsobjekt.

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