Gewusst wie: hinzufügen (id) sender zu den folgenden -(IBAction)?
Wie fügen Sie eine (id) sender die den folgenden code?
- (IBAction) gobutton: (UIButton *) button5 {
Alles was ich Versuch scheitert, jede mögliche Hilfe würde geschätzt. Danke.
EDIT: ich brauche, um die (UIButton *) - Taste 5 Referenz in der (IBAction)
- Warum die negativen Stimmen? 🙁
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich mich Recht erinnere, und wenn Sie dies in der Art, ich denke, Sie sind,
Unter der Annahme, dass Sie angegeben button5 als parameter, um anzugeben, dass diese Ausführungen in der Antwort zu button5 gedrückt wird.
Ok, erstmal....
IBAction
meint nicht wirklich etwas besonderes, außer für den Interface Builder. Grundsätzlich:Also, wenn Sie sehen
IBAction
, denke, "void". Der einzige Grund, es ist es ist wie ein flag zu sagen, Interface Builder, dass eine Methode eine gültige Methode zum verbinden von Steuer-Aktionen zu. Die Objective-C-compiler braucht nicht zu wissen über es und so ist es definiert, für nichtig zu erklären, da alle "action" - Methoden, die "void" zurückgeben.Zweiten, action-Methoden auch ein argument, das ein Objekt von einer beliebigen Anzahl von Arten. Weil dieses, action-Methoden sollen Art
id
als Typ für Ihr argument. Auf diese Weise übergeben werden können, die einen Zeiger auf jede Objective-C-Objekt, ohne dass der compiler generiert einen typfehler.Also in der Regel Handlungen arbeiten sollte so etwas wie dieses:
In anderen Worten, eine
id
ist fast wie ein untypisierter Zeiger wie einvoid *
wird routinemäßig verwendet, in C, wenn irgendeine Funktion muss ein Zeiger auf etwas unbekannten Typs.sender
könnte unterschiedliche Arten von Kontrolle, so etwas generisches wieid
verwendet wird, dann sender umgewandelt wird, um etwas genauer zu sein, sobald Sie den code weiß, was es ist.Sowieso, es gibt absolut keinen Grund zu definieren, so etwas wie einen return-Typ von
IBAction
es sei denn, Sie verwenden die Methode als Ziel der Aktion in den Interface Builder. Eine IBAction in Ihrem app-delegate scheint eine Art von ungewöhnlichen....Es ist nicht klar, was Sie versuchen zu tun, aber die meisten Aktionen so Aussehen:
Den ersten parameter, um eine Aktion ist immer den Absender (Sie können den Typ angeben, und den Namen entsprechend).
Wenn eine Methode ist die action für einen button, dann wird der erste parameter die Taste. Wenn diese Methode der Aktion für mehrere Tasten, dann wird der erste parameter können Sie bestimmen, welche Schaltfläche wurde abgehört (als Aussätziger beschreibt).
Was für ein problem du eigentlich zu lösen versucht?
Es gibt Techniken für die Weitergabe von Informationen an die action-Methode. Zum Beispiel, wenn Sie eine Schaltfläche, die erscheint, auf eine table view cell und führt die gleiche Aktion für jede Zelle, dann in der action-Methode, die Sie würde sein wollen, in der Lage zu bestimmen, welche Zelle die Taste abgehört.
-gobutton:
Methode?Wie bekomme ich die id des Absenders, bevor der Benutzer berührt die Steuerung?
Gefunden! Ein tag und die Verwendung viewWithTag.
Können Sie erstellen eine einfache Struktur, die enthält sowohl die UIButton und der Absender und nutzen?
struct myObject
{
UIButton* button5;
id Absender;
}
...oder Sie könnten Ihre eigenen erstellen NSObject (wahrscheinlich mehr Kakao-y):
@Beispiel myObject : NSObject
{
...
}