2016-04-27 8 views
1

Ich habe eine MapKit-Ansicht, die zunächst mit der Karte von Nordamerika lädt.Wie kann man eine mit @IBAction deklarierte Schaltfläche ausblenden?

Ich habe einen Button auf diesem MapKit, auf meinem Storyboard als Bild. Ich habe es mit einem ViewController mit einem @IBAction verbunden.

Aber ich möchte diese Schaltfläche ausblenden, wenn meine Ansicht zunächst geladen wird, und es nur anzeigen, wenn der Benutzer in die Karte gezoomt hat.

Ist es möglich, diese Schaltfläche bei der anfänglichen Belastung irgendwie zu verbergen? Müssen wir die Aktion auf ein UIButton referenzieren oder umgekehrt?

+0

Sie benötigen einen Ausgang, keine Aktion, wenn Sie zugreifen möchten die Taste. – rmaddy

+0

Wenn ich das tue, was wäre der beste Weg, um meine Verkleinerung Funktion auf Knopfdruck aufzurufen? – 221b

+1

Die Aktion dient zur Handhabung der Schaltfläche tippen. Die Steckdose dient dazu Dinge an den Knopf zu tun. – rmaddy

Antwort

1

Da @IBAction eine Funktion bezeichnet, kein Objekt, können Sie damit nicht auf UIButton zugreifen, bis es aufgerufen wird.

Um auf eine Schaltfläche nach Belieben zuzugreifen, müssen Sie eine @IBOutlet zusätzlich zu @IBAction, die Sie haben, und binden Sie Ihre Schaltfläche daran. Dies würde Sie hidden Eigenschaft nach Bedarf:

button.hidden = YES; 
+0

Danke! Was wäre der beste Weg, um mein @IBOutlet mit meiner @IBAction zu verbinden? – 221b

+1

@ user1650978 Sie binden die eine nicht an die andere, binden Sie Ihre 'UIButton' an beide, indem Sie den Befehl aus IB in das Codefenster ziehen. – dasblinkenlight

0

auf den @ dashblinkenlight Antwort erweitern:

Ein IBAction ist ein Link von einer Steuerung zu einem Stück Code, der ausgeführt wird, wenn der Benutzer auslöst, dass die Steuerung .

Ein IBOutlet ist ein Link in die andere Richtung, von Ihrem Code zum Steuerelement.

Sie müssen eine Aktion und Verknüpfung von Ihrem Steuerelement zu Ihrer Quelle definieren, wenn ein Steuerelement Ihren Code aufrufen soll, wenn der Benutzer damit interagiert.

Sie müssen eine Steckdose und einen Link von Ihrem Quellcode zu Ihrem Steuerelement definieren, wenn Ihr Code mit dem Steuerelement interagieren soll.

Sie brauchen also manchmal beide, wie in diesem Fall.

Interface Builder bietet verschiedene Möglichkeiten zum Definieren und Verknüpfen von Steckdosen. Am einfachsten finde ich es, Interface Builder in den Haupteditorbereich zu setzen und den Assistenten-Editor im "automatischen" Modus einzurichten, so dass die Header-Datei für den View-Controller angezeigt wird, der den ausgewählten View-Controller definiert.

Dann ziehe ich control-ziehen von der Kontrolle (oder anderen View-Objekt) in die Header-Datei, und wählen Sie "outlet". Xcode fügt dem Quellcode eine IBOutlet Deklaration hinzu und macht die IBOutlet Verbindung.

Ich mache das gleiche für die Definition von Aktionen, nur dieses Mal sage ich IB, eine Aktion zu erstellen, keine Steckdose. In diesem Fall erstellt Xcode die Deklaration für die IBAction enter code here in der Header-Datei und auch eine leere "stub" -Aktionsmethode in der .m-Datei.

(wenn Sie mit Swift dann Header und Implementierung Sie keine Dateien haben, so gibt es nicht 2 Plätze sind, die Aktion zu definieren.)

Verwandte Themen