Frage

Ich ließ eine UINavigationBar auf die XIB Form. Dann ließ ich eine UIButton auf dem Formular (nicht auf dem UINavigationBar). Ich änderte den Typ InfoLight (so dass es wie ein Info-Symbol aussieht).

Ich zog dann die UIButton auf die UINavigationBar und legen es die richtige Taste sein. Es ändert sich auf magische Weise die Art von UIButton als Folge des Drag UIButtonBarItem.

Warum habe ich nicht nur die UIButton auf die UINavigationBar gezogen zu beginnen? Denn sobald der Knopf ist, Interface Builder lassen Sie nicht die Art ändern welche Gründe auch immer InfoLight.

Die in der angrenzenden .h-Datei, habe ich eine Erklärung für die IBAction

- (IBAction) btnInfoClick; 

Dann in der .m-Datei, schrieb ich die Umsetzung:

- (IBAction) btnInfoClick {
    // kick off the about screen
    // code follows
}

Wie Haken ich jetzt auf den Button in der Navigationsleiste auf meine btnInfoClick Funktion?

Oder werde ich darüber in die falsche Richtung beginnen?

soll ich beachten, wenn ich einfach eine Schaltfläche aus der Bibliothek direkt auf die Navigationsleiste ziehen, ich auf dem Datei-Owner-Symbol klicken kann, und dann die btnInfoClick IBAction auf die Schaltfläche ziehen. In diesem Fall löst das Click-Ereignis in Ordnung.

Doch in dem Szenario, in dem ich den Knopf an andere Stelle und dann auf die Navigationsleiste zuerst ziehen, das Ereignis nie ausgelöst. Nicht sicher, was ich tue, falsch ist.

War es hilfreich?

Lösung 2

Ich denke, es ist ein Fehler in IB ist. Aber ich fand eine Abhilfe hier . Umbuchen für die Nachwelt:

  1. Erstellen Sie eine Schaltfläche in der Ansicht (nicht die Navigationsleiste!)
  2. Stellen Sie diese Taste Info Licht sein
  3. Stellen Sie die Aktion für diese Taste Berühren Innen Bis sein
  4. Bewegen Sie die Taste auf der Navigationsleiste

Andere Tipps

Öffnen Sie IB, wählen Sie die UIBarButtonItem und im Inspektor, gehen Sie auf die Registerkarte Verbindungen.

Ziehen Sie von dem Punkt auf der rechten Seite von Selektor Ihren AppDelegate / Datei-Besitzer (die, wo die Aktion definiert wurde) und wählen Sie die Aktion.

Ich nehme an Dich bereits versucht, aber nur für den Fall. Wenn die Aktion nicht angezeigt wird, versuchen Sie, Aktionsdefinition Einstellung wie etwas zu sein:

- (IBAction)btnInfoClick:(id)sender;

und wiederholen Sie den Vorgang. Ich weiß, dass Sie nicht wirklich den Absender (zumindest programmatisch, wie ich immer verwenden) angeben müssen, aber ich hatte das gleiche Problem und nach dem Absender param Hinzufügen es funktionierte richtig.

Viel Glück und lassen Sie mich wissen, ob das funktioniert!

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