2011-01-17 2 views
0

Ich habe eine xcode App, die ich mit IB für Mac erstellen. Die App startet mit bereits geöffneter windowA. Es gibt eine Schaltfläche in WindowA, die bei gedrückter Maustaste WindowB öffnet und folglich WindowA schließt.2 Aktion Verbindungen in IB zu einer Taste

Ich habe in den Tutorials gefunden, dass es nur 1 Aktion Aktion Verbindung pro Objekt gesendet werden kann, so alles, was ich an dieser Stelle tun kann, ist windowA schließen, oder WindowB aufrufen, um oben zu öffnen.

Kann mir jemand sagen, wie ich beide mit dem gleichen Knopf erreichen kann?

Antwort

0

Nun, eigentlich können Sie eine einzige Methode aufrufen. Aber mit dieser Methode können Sie mehrere Dinge erreichen. Zum Beispiel ein Fenster schließen und ein anderes öffnen.

Es ist nicht notwendig, eine vollständige Klasse zu erstellen - was einer .m-Datei entsprechen würde. Sie fügen einfach eine weitere Methode

- (IBAction) doIt:(id) sender 

zu einer vorhandenen Klassendatei hinzu. Verbinde dies mit deiner Schaltfläche in IB. Daher legen Sie "File's Owner" auf die Klasse fest, in der sich Ihre IBAction befindet (oder, besser gesagt, setzen Sie die IBAction-Methode in die Klassendatei "File's Owner"). Wählen Sie im Interface Builder den Menübefehl File> Reload all class files. Klicken Sie nun im Interface Builder mit der rechten Maustaste auf "File's Owner". Du solltest deine Aktion dort sehen. Ziehen Sie den runden Kreis rechts vom Popup auf Ihre Schaltfläche. Jedes Mal, wenn auf die Schaltfläche geklickt wird, sollte die Methode aufgerufen werden.

+0

Es tut mir leid, hier wie ein Neuling zu klingen, aber ich habe C++ vor 10 Jahren im College gelernt, und dies ist mein erstes Kakaoprojekt. Eine Methode wäre eine .m-Datei, wie meine main.m korrekt? Also würde ich einfach eine neue Datei erstellen, die cacao und nswindow headers aufruft und die Aktionen code, dann eine Verbindung in IB für diese Schaltfläche zu der .m Datei herstellen, die ich korrekt erstellt habe? – kkniskern

+0

... Ich versuchte es genauer zu erklären. Der einfachste Weg wäre ein Screencast :) – Axel

+0

Danke ... das macht mehr Sinn ... Ich habe versucht, in IB, und es gibt einfach keine Möglichkeit, es zu tun. Screencast wäre fantastisch. – kkniskern

Verwandte Themen