Frage

Meine Frage kann ein bisschen dumm sein, aber warum kann nicht jedes Objekt in IB Griff instanziiert, sagen wir, klicken? Ich meine, ich bin in der Lage, mein eigenes Objekt zu einem xib hinzufügen und Link Auslässen cotrols und Aktionen steuern Methode einzuwenden, aber wenn ich den Knopf drücke alles stürzt gerade (uknown Wähler).

Haben Sie Jungs haben einen Hinweis um das?

Bearbeiten : Der Code, wie gewünscht:

@interface TextController {
    IBOutlet UILabel * textLabel;
    IBOutlet UITextField * textField;
}

-(IBAction)buttonClicked:(id)sender;

@end

@implementation TextController

-(IBAction)buttonClicked:(id)sender {
    textLabel.text = @"Ololo";
}

@end

Verbindungen in IB sind in Ordnung, glauben Sie mir einfach. Es ist wirklich schwer, um sich mit all diesen drag'n'drop Sachen falsch:)

EDIT 2: TextController ist kein Dateibesitzer (in diesem Fall, es funktioniert). Aber ich möchte nur verstehen, warum ich nicht eine Aktion auf ein Objekt verkabeln kann (kann auch nicht eine Unterklasse von UIViewController sein).

War es hilfreich?

Lösung

Sie können in der nib-Datei Stellen und Aktionen zu einem Objekt verbinden. Ziehen Sie eine NSObject bilden die Bibliothek Palette auf Ihre nib-Datei, in Interface Builder. Dann gehen Sie auf die Registerkarte Identität der Informationspalette und stellen Sie die Klasse des Objekts ein.

So können Sie ein beliebiges Objekt einer Klasse von Ihrer Feder instanziieren können. Wenn das Ziel, das Sie Haken wollen statisch aus der Feder-Datei erstellt. Achten Sie darauf, dass der Besitzer der Datei mindestens einen Verweis auf das Objekt haben, sonst wird es so bald freigegeben werden, wie es erstellt wurde. Die Ziele werden nicht vom Absender erhalten.

Wenn das Objekt, das Sie anschließen mögen, sollte nicht statisch aus Ihrer Feder erzeugt wird, dann awakeFromNib in einer Klasse implementieren, die aus der Feder-Datei instanziiert wird und die Ziele in dem Code anschließen.

Die letzte Wahl ist, wenn Sie keine Unterklasse der eigenen in der nib-Datei überhaupt verfügen. Dann implementieren initWithNibName:bundle: in Ihrer UIViewController Unterklasse, und haken Sie Ihre Ziele in Code, nachdem die Super Implementierung aufrufen.

Andere Tipps

Postleitzahl, dies in der Regel bedeutet, dass Sie Ihre Verbindungen ordnungsgemäß verdrahtet haben nicht. Ist Datei Besitzer TextController in IB?

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