it-swarm.com.de

IBOutlet und IBAction

Was ist der Zweck der Verwendung von IBAction und IBOutlet in der Objective-C-Codierung für das iPhone. Macht es einen Unterschied, wenn ich sie nicht verwende?

151
suse

IBAction und IBOutlet sind Makros, mit denen Variablen und Methoden bezeichnet werden, auf die im Interface Builder verwiesen werden kann.

IBAction löst sich in void auf und IBOutlet löst sich zu nichts auf, aber sie bedeuten für Xcode and Interface Builder, dass diese Variablen und Methoden im Interface Builder verwendet werden können, um UI-Elemente mit Ihrem Code zu verknüpfen.

Wenn Sie Interface Builder überhaupt nicht verwenden, benötigen Sie sie nicht in Ihrem Code. Wenn Sie ihn jedoch verwenden, müssen Sie IBAction für Methoden angeben, die in IB und IBOutlet verwendet werden. für Objekte, die in IB verwendet werden.

202
Jasarien

Die herkömmliche Methode zum Kennzeichnen einer Methode, sodass sie im Interface Builder angezeigt wird, und Sie können eine Verbindung darauf ziehen, bestand darin, den Rückgabetyp der Methode als IBAction festzulegen. Wenn Sie jedoch Ihre Methode für ungültig erklären (IBAction ist # define'd als ungültig) und ein (id) -Argument bereitstellen, ist die Methode immer noch sichtbar. Dies bietet zusätzliche Flexibilität, z 

Alle drei davon sind im Interface Builder sichtbar:

-(void) someMethod1:(id) sender; 
-(IBAction) someMethod2; 
-(IBAction) someMethod3:(id) sender;

Einzelheiten finden Sie im Apple Interface Builder-Benutzerhandbuch, insbesondere im Abschnitt zur Xcode-Integration.

38
Michael Rogers

Sie müssen IBOutlet und IBAction verwenden, wenn Sie den Interface Builder (daher das IB-Präfix) für Ihre GUI-Komponenten verwenden. IBOutlet ist erforderlich, um Eigenschaften in Ihrer Anwendung Komponenten in IB zuzuordnen, und IBAction wird verwendet, um die Zuordnung Ihrer Methoden zu Aktionen in IB zu ermöglichen. 

Angenommen, Sie definieren eine Schaltfläche und ein Label in IB. Um den Wert der Beschriftung durch Drücken der Schaltfläche dynamisch zu ändern, definieren Sie eine Aktion und eine Eigenschaft in Ihrer App, die der folgenden ähnelt:

UILabel IBOutlet *myLabel;
-(IBAction) pushme;

Dann würden Sie in IB myLabel mit dem Label verbinden und die Pushme-Methode mit dem Button verbinden. Sie benötigen IBAction und IBOutlet, damit diese Verbindungen in IB vorhanden sind.

31
ennuikiller

Interface Builder verwendet sie, um zu bestimmen, welche Elemente und Nachrichten mit den in Ihrem Fenster/Ihrer Ansicht verwendeten Schnittstellensteuerelementen "verkabelt" werden können.

IBOutlet und IBAction sind reine Markierungen, nach denen der Interface Builder beim Parsen Ihres Codes zur Entwurfszeit sucht. Sie haben keinen Einfluss auf den vom Compiler generierten Code.

5
KazR

Ein Outlet ist eine Verknüpfung vom Code zur Benutzeroberfläche. Wenn Sie ein UI-Element anzeigen oder ausblenden möchten, den Text eines Textfelds abrufen oder ein Element (oder hundert andere Elemente) aktivieren oder deaktivieren möchten, müssen Sie einen Ausgang dieses Objekts in den Quellen definieren und diesen Ausgang verbinden durch das „Schnittstellenobjekt“ zum UI-Element. Danach können Sie den Ausgang wie jede andere Variable in Ihrer Codierung verwenden.

IBAction - eine spezielle Methode, die durch Objekte der Benutzeroberfläche ausgelöst wird. Interface Builder erkennt sie.

@interface Controller
{
  IBOutlet id textField; // links to TextField UI object
}

- (IBAction)doAction:(id)sender; // e.g. called when button pushed

Weitere Informationen finden Sie unter Apple Docs

4
पवन

Habe mich mit der Schlüsselwertcodierung beschäftigt und dachte, es könnte jemandem helfen. Es hilft beim Verständnis von IBOutlet.

Bei der Betrachtung des Flusses konnte man feststellen, dass IBOutlets nur dazu da sind, um den Eigenschaftsnamen mit einem Steuerelementnamen in der Nib-Datei abzugleichen.

 How nib file is loaded, screenshot of Matt's online book for iOS6

4
NSCoder

IBAction und IBOutlets werden verwendet, um Ihre im Interface Builder erstellte Schnittstelle mit Ihrem Controller zu verbinden. Wenn Sie den Interface Builder nicht verwenden und Ihre Schnittstelle vollständig in Code erstellen würden, könnten Sie ein Programm erstellen, ohne sie zu verwenden. In der Regel verwenden die meisten von uns den Interface Builder. Sobald Sie jedoch etwas Interaktivität in Ihrer Benutzeroberfläche haben möchten, müssen Sie IBActions und IBoutlets verwenden.

3

wenn Sie den Interface Builder verwenden, können Sie Connections Inspector verwenden, um die Ereignisse mit Ereignishandlern einzurichten. Die Ereignishandler sollen die Funktionen sein, die den Modifikator IBAction aufweisen. Eine Ansicht kann mit der Referenz für denselben Typ und mit dem Modifizierer IBOutlet verknüpft werden.

1
Zephyr

IBOutlet

  • Es ist eine Eigenschaft
  • Wenn die Nib (IB) -Datei geladen wird, wird sie Teil gekapselter Daten, die eine Verbindung zu einer Instanzvariablen herstellen. 
  • Jede Verbindung wird nicht archiviert und wiederhergestellt.

IBAction 

  • Attribute zeigt an, dass die Methode eine Aktion ist, zu der Sie über Ihr Storyboard im Interface Builder eine Verbindung herstellen können.

@ - Dynamisches Muster IB - Interface Builder

0
Vinoth Anandan