In meinem Programm sollen 2 Funktionen (IBAction player.Move(UIButton)
und autoMove()
) abwechselnd aufgerufen werden, bis alle Felder (UIButtons) angeklickt wurden. Dazu habe ich eine Funktion play()
erstellt. Allerdings weiß ich nicht wie ich die IBAction playerMove
innerhalb der play()
Funktion setzen kann, da ich hier keinen Parameter benötige.
Ich habe einige Antworten gefunden und versucht self.playerMove(nil)
und self.playerMove(self)
, aber es funktioniert nicht.
Aufruf von IBAction von einer anderen Methode ohne Parameter
import UIKit
class ViewController: UIViewController {
@IBOutlet var cardsArray: Array<UIButton> = []
var randomCard = 0
override func viewDidLoad() {
super.viewDidLoad()
self.play()
// Do any additional setup after loading the view, typically from a nib.
}
func play() {
self.autoMove()
self.playerMove(self) // <----- here is my problem
}
@IBAction func playerMove(sender: UIButton) {
switch (sender) {
case self.cardsArray[0]:
self.cardPressedAll(0)
case self.cardsArray[1]:
self.cardPressedAll(1)
case self.cardsArray[2]:
self.cardPressedAll(2)
case self.cardsArray[3]:
self.cardPressedAll(3)
default: break
}
}
func cardPressedAll (cardNumber: Int) {
self.cardsArray[cardNumber].enabled = false
self.cardsArray[cardNumber].setBackgroundImage(UIImage(named: "cross"), forState: UIControlState.Normal)
self.cardsArray.removeAtIndex(cardNumber)
}
func autoMove(){
self.randomCard = Int(arc4random_uniform(UInt32(self.cardsArray.count)))
self.cardsArray[self.randomCard].enabled = false
self.cardsArray[self.randomCard].setBackgroundImage(UIImage(named: "nought"), forState: UIControlState.Normal)
self.cardsArray.removeAtIndex(self.randomCard)
}
}
Leider '@IBAction func player (Sender: UIButton)' gibt mir Fehler in jedem 'case':' Wert des optionalen Typs 'UIButton?' nicht aufgewickelt; Wolltest du '!' oder "?" Beide ? und ! gib mehr Fehler;) Wenn es um ** oder ** geht: Ich weiß nicht, welchen Button ich an 'playerMove' weitergeben will, da in dieser Funktion ein Spieler einen Button auswählt. In 'autoMove()' wird zufällig eine Schaltfläche vom Computer ausgewählt. – Dandy
Es klingt also so, als müssten Sie es nicht optional machen, der Code wird immer mit einer Schaltfläche umgehen, aber Sie müssen den Code in 'play' machen, um herauszufinden, welche Taste übergeben werden soll. Ich habe keine Ahnung, was du willst, also kann ich dir damit nicht helfen. Sie müssen herausfinden, was Sie wollen. – Jesper
Vielen Dank für Ihre Geduld, aber ich verstehe es nicht. Durch den Aufruf von 'playerMove' will ich, dass ein Spieler ein Feld auswählt (was eine Schaltfläche ist), dann wird dieses Feld entsprechend meinem Code deaktiviert, sein Hintergrund wird sich ändern und dann wählt ein Computer zufällig ein Feld (' autoMove') und es wird auch deaktiviert und der Hintergrund wird sich ändern, dann wieder - die Bewegung des Spielers, dann die Bewegung des Computers, bis alle Felder deaktiviert sind. Wie kann ich die Funktion 'play()' anzeigen welche Taste zu übergeben? – Dandy