Frage

Grüße,

Ich habe ein ansichtsbasiertes Anwendungsprojekt, in dem ich eine NSObject-Klasse namens „SquareClass“ erstellt habe.Nun möchte ich über den Schnittstellen-Builder von ), möchte ich in diesen Aktionen Methoden dieses Objekts aufrufen können.

Beispiel:

(void)MyAction1:(id)color
{
   [square setColor:color];
}

(void)MyAction2:(id)width
{
   [square setWidth:width];
}

Wie Sie sehen, muss das quadratische Objekt einen globalen Gültigkeitsbereich haben.Für einige von uns scheint das einfach zu sein, vielleicht ist es aber auch die falsche Vorgehensweise.Ich habe im Internet gesucht und irgendwie einen Weg für eine .nib-Datei gefunden, nicht für eine .xib-Datei.

Jeder Vorschlag wäre sehr dankbar.Vielen Dank.

Yohann.

PS:Dies ist mein erster Beitrag überhaupt, seien Sie nachsichtig.

War es hilfreich?

Lösung

Zuerst wird eine NIB-Datei ist, für alle Absichten und Zwecke, das gleiche wie eine XIB-Datei; es ist nur eine kompilierte Version einer XIB-Datei.

Nun, um ein Objekt zu erstellen, die von NSObject abgeleitet in Ihrem NIB / XIB, ziehen Sie einfach eine NSObject aus dem Bibliotheksfenster in der Datei. Dann auf der Identity Inspector die Klasse zu Ihrer benutzerdefinierten Klasse ändern.

Wenn Sie definieren Methoden wie folgt aus:

- (IBAction)myAction:(id)sender

Sie werden in der Lage sein, sie in Interface Builder anschließen.

Having said, dass alle, ist es schwierig zu sagen, ob, was Sie tun das Richtige ist, überhaupt zu tun. Es klingt für mich wie Sie eine NSViewController Unterklasse verwenden sollten, so bei der Dokumentation einen Blick dafür.

Sie sollten auch sicherstellen, dass Sie verstehen, welche Ansicht, Controller und Modellobjekte sind. Es gibt viel Literatur zu diesem Thema.

Andere Tipps

Wenn Sie eine Klasse erstellen, die UIView erweitert, können Sie den Eigentümer der Datei für Ihre xib veranlassen, die erweiterte Klasse zu implementieren.Von diesem Punkt an fügen Sie Ihrer erweiterten Klasse einfach eine Instanzvariable für das Quadrat hinzu.Der letzte Schritt in diesem Prozess besteht darin, Ihrer Klasse Methoden hinzuzufügen, um die einzelnen Steuerelemente an Aktionen zu binden.

- (IBAction) pinSelected: (id)sender;

Sobald Sie diese Methoden erstellt haben (stellen Sie sicher, dass sie IBAction zurückgeben, es ist eigentlich ein Alias ​​für void, dient aber als Hinweis für INterface Builder), dann können Sie Ihre Steuerelemente über den Besitzer der Datei an die Methode binden (verwenden Sie Strg + Ziehen, um die festzulegen). Verknüpfung).

Viel Glück!

Ich fand, wie zu tun, was ich brauchte, die nicht innerhalb der XIB-Datei erfolgt. Es ist viel einfacher als das, was ich dachte, obwohl die oben genannten Vorschläge sind gültig.

Um das quadratische Objekt zu verwenden, hatte ich nur die Header-Datei zu verweisen:

 #import "square.h"

in der SquareUIViewController.h und einen Verweis auf ein quadratisches Objekt hinzufügen:

Square *square;

Dann in der SquareUIController.m, ich muss nur den Platz Objekt zuweisen / initialisieren etwas vor anderes zu tun:

(IBAction)myInit
{
square = [[Square alloc] init];
}

Jetzt kann ich die Methoden des ersten Beitrags verwenden Und Voila!

ps: Kritiker, Feuer

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