Ich benutze Xcode 8 Beta. Ich kann nicht mehrere UIButtons aus dem Storyboard ziehen, um eine Verbindung zu einer einzelnen @IBAction in Swift-Datei herzustellen. Fehler? Danke für Ihre Hilfe.
Mit dieser Problemumgehung können Sie eine vorhandene Aktion hinzufügen und mehrere Schaltflächen zu einer Aktion verbinden.
Ich denke, es gibt einen Fehler in Xcode8. Sie können einer einzelnen Aktion/Funktion mehrere/einzelne Schaltflächen hinzufügen, indem Sie sender
in _ sender
ändern.
zB: - Normale Taste
@IBAction func huu(sender: UIButton) {
}
Sie können dieser Aktion nicht mehrere Schaltflächen oder eine einzelne Schaltfläche hinzufügen, die Sie einfach so ändern müssen. Anschließend können Sie mehrere Schaltflächen hinzufügen, indem Sie vom Storyboard aus ziehen und eine Verbindung herstellen.
@IBAction func huu(_ sender: UIButton) {
}
Nach dem Anschließen von IBOutlets zeigt Xcode eine Warnung wie folgt an:
Um diese Warnung zu entfernen, löschen Sie einfach das Zeichen _
aus der Aktion/Funktion. Stellen Sie sicher, dass Sie _
löschen, nachdem Sie Ihre IBOutlets verbunden haben
Hoffe das wird dir helfen! :)
Wenn Sie den Absender in AnyObject anstatt in Any oder UIButton ändern, können Sie mehrere Schaltflächen mit derselben Aktion verbinden.
Wenn Sie eine Tastenaktion verbinden, sieht die Methode standardmäßig folgendermaßen aus:
@IBAction func s(_ sender: Any) {
}
Ändern Sie einfach Any zu UIButton und Sie können weitere Tastenaktionen mit dieser bestimmten Methode verbinden.
Nach dem Ändern sollte es also so aussehen:
@IBAction func s(_ sender: UIButton) {
}
Hoffe, das wird das Problem lösen. :)
Wenn Sie "Any" in "UIButton" ändern, funktioniert dies.
Die unten stehende IBAction funktioniert nur für eine Schaltfläche.
@IBAction func singleButton(sender: Any) {
// Write your logic
}
Die unten stehende IBAction funktioniert mit mehreren Schaltflächen.
@IBAction func multipleButton(sender: UIButton) {
// To find a particular button from an array of buttons
if sender.tag == 1{
// Write your logic
}else if sender.tag == 2{
// Write your logic
}
}
Wenn ich richtig liege, müssen Sie UIGestureRecognizer
verwenden, um mehrere Dinge an eine Aktion anzuhängen.
Sie können jeder Schaltfläche eine UIGestureRecognizer
zuweisen und dann eine davon wie gewohnt mit einer Schaltfläche (Strg-Ziehen) einrichten, bevor Sie von den anderen Gestenerkennungsfunktionen mit Strg-Ziehen auf die erste von Ihnen ausgeführte Aktion klicken.
Ich denke, es ist ein anderes Problem: Wenn Sie versuchen, eine IBAction zum ersten Mal zu erstellen, funktioniert es einwandfrei. Wenn Sie sich jedoch aus irgendeinem Grund entschließen, die IBAction erneut zu verbinden (dieselbe Aktion mit einem anderen Objekt oder die Funktion umzubenennen), schlägt dies fehl.
Tatsächlich erstellen Sie eine IBAction mit dem Namen doSomething
, die eine Funktion func doSomething(sender: UIButton)
erstellt. Bei XCode 8 (oder Swift 2.3/3.0) wird diese Methode jedoch als func doSomethingWithSender(sender: UIButton)
interpretiert.
Ich denke, es ist ein Fehler, Apple hat sich ein bisschen zu sehr mit der Sache "Objc-Methoden umbenennen" beschäftigt.
Ich habe den Absender von Any auf UIButton geändert
Control ziehen Sie die Schaltfläche auf den Namen der Funktion.
Ich habe es viele Male versucht, schließlich habe ich das Ergebnis wie folgt erhalten:
Normale UIAction
@IBAction func selectBtn(_ sender: Any) {
}
versuchen Sie für mehrere Schaltflächen mit derselben UIAction-Methode Folgendes:
@IBAction func selectBtn(_ sender: UIButton) {
}
Das hat bei mir funktioniert. Ich habe den Rückgabetyp von "Beliebig" in "UIButton" geändert
In der Vollversion von Swift 3 wird dies funktionieren.
Ändern Sie einfach Any in UIButton und Sie können weitere Tastenaktionen mit dieser bestimmten Methode verbinden.
Nach dem Ändern sollte es also so aussehen:
@IBAction func s (_ sender: UIButton) {} Damit wird das Problem sicher gelöst. :)