Ich habe eine Anwendung, wo ich eine UITabBarController
mit 3 Tasten verwendet. Also habe ich auch 3 Klassen. Was ich tun möchte, ist ein - (IBAction) doSomething: (id) sender {}
in Klasse 1 (Ansicht 1) mit einer Schaltfläche in Klasse 2 (Ansicht 2) aufrufen.Aufruf einer Funktion (IBAction) in einer Klasse mit einer Schaltfläche in einer anderen Klasse (und Ansicht)
Antwort
nehmen, was es ist, dass Ihre doSomething
Methode (nicht Funktion) tut und es verwendet, Verfahren in einer neuen Klasse zu erstellen. Beide Controller können die Klasse importieren, instanziieren und die Methode verwenden.
Alternativ können Sie eine Benachrichtigung an den Controller senden, der doSomething
hat, aber wenn der Code in der Methode wirklich auf beide Controller zutrifft, stellen Sie ihn beiden Controllern zur Verfügung.
Sie können einen Controller eine Benachrichtigung an einen anderen senden lassen. Wenn Sie Klasse benachrichtigen möchten 1 die Taste-gedrückt-Code ausführen erhalten Sie eine Benachrichtigung wie folgt senden:
[[NSNotificationCenter defaultCenter] postNotificationName:@"ABCPerformButtonAction"
object:nil];
Sie müssen es nicht nennen ABCPerformButtonAction, müssen Sie nur eine Zeichenfolge, die werden Sie erkennen und etwas - ich habe ABC verwendet, weil ich Ihre Initialen oder den Namen der App oder was auch immer nicht weiß - um sicherzustellen, dass Sie nicht versehentlich eine Benachrichtigung mit demselben Namen wie eine Benachrichtigung senden, die Ihnen unbekannt ist auf das Sie achten (einschließlich Bibliotheken von Drittanbietern, die Sie verwenden, usw.).
Wenn diese Benachrichtigung ausgeht, führt jedes Objekt, das sich beim defaultCenter registriert hat, um auf @ "ABCPerformButtonAction" zu warten, alle von Ihnen ausgewählten Aktionen aus. Hier ist, wie Controller 1 Register (dies sollte in einem Ort wie ViewDidLoad oder die Initialisierung Methode des Objekts befindet):
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(performDoSomething:)
name:@"ABCPerformButtonAction"
object:nil];
Der Wähler gibt, performDoSomething :, ist nur der Name einer Methode, die Sie ausführen möchten, wenn Die Benachrichtigung erlischt. Diese Methode muss ein bestimmtes Format haben, sodass Sie Ihre doSomething-Methode nicht direkt aufrufen können. Es würde so aussehen:
- (void)performDoSomething:(NSNotification *)notif {
[self doSomething];
}
Wie Sie sehen können, ist alles, was es tut, die Methode aufzurufen. Offensichtlich könnte es viel mehr tun, und Sie können sogar Informationen zusammen mit der Benachrichtigung senden (siehe unten).
Schließlich ist es wichtig, dass Sie auch Ihr Objekt als Beobachter entfernen, bevor es freigegeben wird. In Ihrer Dealloc-Methode für jedes Objekt, das für den Empfang der Benachrichtigung registriert wurde, fügen Sie Folgendes hinzu:
Hoffentlich macht das Sinn. Die Apple documentation for NSNotificationCenter erklärt mehr und sie bieten mehrere Beispiel-Apps, die Benachrichtigungen verwenden.
- 1. Java-Aufruf einer Funktion in einer Klasse von einer anderen
- 2. Aufruf einer Funktion einer Klasse mit Vorlagen
- 3. Aufruf einer Klassenfunktion von einer anderen Klasse
- 4. Aufruf einer Funktion aus einer anderen erweiterten Klasse
- 5. Aufruf einer Methode einer Klasse in einer anderen Methode in der gleichen Klasse in Python
- 6. Aufruf einer Methode aus einer anderen Klasse in einer anderen Anwendung mit FOSTRestBundle in Symfony
- 7. Repaint() Methode Aufruf in einer anderen Klasse
- 8. Aufruf eines Arrays aus einer anderen Klasse
- 9. 2D-Array mit Objekten einer Klasse in einer anderen Klasse
- 10. Java: Aufruf einer Methode in einer anderen Klasse
- 11. Aufruf einer Methode in einer Klasse
- 12. Aufruf einer statischen Funktion auf einer generischen Klasse in Typoskript
- 13. Aufruf einer öffentlichen, statischen Funktion in einer abstrakten Klasse
- 14. Aufruf einer anderen Methode zu einer anderen Klasse
- 15. Getter von einer anderen Klasse in einer Klasse aufrufen
- 16. Aufruf einer Klasse in ASP.NET
- 17. Rückgabe einer anderen Klasse beim Instanziieren einer Klasse in Python
- 18. Methode in einer anderen Klasse aufrufen
- 19. Aufruf einer Klasse dynamisch?
- 20. Mit einer Methode aus einer anderen Klasse
- 21. Aufrufen eines Segments in einer Klasse aus einer anderen Klasse
- 22. Aufruf Funktion aus einer Klasse durch Klicken auf eine Schaltfläche
- 23. Konstruktor einer Klasse in einer anderen Klasse aufrufen
- 24. Aufruf Methode aus einer anderen Klasse
- 25. zu einer Klasse in einer Funktion Umfang
- 26. NullPointerException beim Aufruf einer Variablen aus einer anderen Klasse
- 27. Zugriff auf Methodenvariablen einer Klasse in einer anderen Python-Klasse
- 28. Aufruf einer Methode aus einer anderen Klasse ruby
- 29. Klasse innerhalb einer anderen Klasse in C#
- 30. Aufruf einer Methode einer Klasse, die Thread aus einer anderen Klasse
Methode richtig :). aber es ist ein bisschen komplizierter. lassen Sie mich erklären. In der zweiten Klasse habe ich eine Methode, um einige Einstellungen in einem nsarray zu speichern und in einem plist zu speichern (alles passiert, wenn auf eine Schaltfläche geklickt wird). Wenn ich von der zweiten Ansicht zur ersten Ansicht zurückwechsle, muss ich diese Einstellung direkt verwenden, ohne etwas zu tun. Also möchte ich Code in die Methode in der zweiten Klasse einfügen, um eine Methode in der ersten Klasse aufzurufen, die die Einstellungen erhält. – user556541
Ok, ich habe eine Erklärung hinzugefügt, wie man eine Benachrichtigung sendet, die das macht, was Sie wollen. –
Hast du das versucht? –