Wie Georg schon sagte, können Sie mit der Objective-C-Laufzeitumgebung jedes beliebige Objekt mit einem anderen Objekt verknüpfen, also können Sie ein Objekt mit einem Steuerelement verknüpfen, wenn Sie das wirklich wollen.
Aber so funktioniert ein Standard-Cocoa-Programm nicht wirklich. Stattdessen sind in Cocoa das Model-View-Controller-Muster und die Delegation das Standard-Idiom, und es wird davon abgeraten, ein Objekt direkt mit einem Widget oder einer Ansicht zu verknüpfen. Selbst für ein sehr kleines Programm würden Sie zumindest einen Model-Controller erstellen (normalerweise als Antragsdelegierter im Cocoa-Jargon), die die Daten verwaltet, und lassen Sie die Ansicht, die aus den Standardsteuerelementen besteht, wie sie ist. Dann interagieren der View und der Model-Controller über Target/Action und Delegation.
Apple hat eine sehr schöne Diskussion über die in Cocoa vorherrschenden Entwurfsmuster, siehe aquí .
Wenn man von einer API (Winforms/C#) zu einer anderen API (Cocoa/Objective-C) wechselt, gibt es im Allgemeinen einige Ähnlichkeiten, aber auch einige Unterschiede. In der Regel lohnt es sich, zu lernen, wie die Dinge in dieser API ablaufen, anstatt zu versuchen, das Gewohnte in eine neue Situation zu zwängen. (Nur um das klarzustellen: Ich sage nicht, welche API von Natur aus besser ist; diese Diskussion geht in beide Richtungen!)
Wenn Sie sich also in einer Situation befinden:
Zu tun X
in API A
Ich kenne die Redewendung P
funktioniert. Ich möchte nun Folgendes tun X
in API B
. Wie kann ich Idiom direkt implementieren P
in API B
?
Ich empfehle Ihnen zu fragen
Zu tun X
in API B
Was soll ich tun? Was ist das Idiom in API B
?
stattdessen.
0 Stimmen
Was macht das Objekt? Dies kann bei der Entscheidung helfen, ob es eine geeignetere Lösung gibt als den Versuch, es mit einem Steuerelement der Benutzeroberfläche zu verknüpfen.
0 Stimmen
Ich möchte, dass die Schaltfläche einen Wert und einen Bezeichner haben. Wenn ich .Tag als Bezeichner verwende, werde ich nicht in der Lage sein, einen Wert darauf zu speichern. Im Grunde, ich brauche nur mehr Informationen in der Schaltfläche zu speichern.
2 Stimmen
Eine Schaltfläche sollte keinen Wert haben; ihr Zweck ist es, eine Aktion aufzurufen, und nicht, beliebige Daten zu speichern.
0 Stimmen
Das ist keine Regel, sonst hätten alle nscontrols nicht ihr aktuelles Integer-Tag, oder?
0 Stimmen
@Schnitzel: Tags dienen der Identifizierung, nicht der Speicherung von Daten. Selbst in der Apple-Dokumentation, die unten in einer Antwort verlinkt ist, heißt es ausdrücklich: "Mit Tags können Sie bestimmte Steuerelemente identifizieren."