In my program, 2 functions (IBAction player.Move(UIButton) and autoMove() ) must be called in turn until all fields (UIButtons) are pressed. To do this, I created the play() function. However, I do not know how I can put an IBAction playerMove inside the play() function, because I do not need a parameter here.
I found some answers and tried self.playerMove(nil) and self.playerMove(self) , but that didn't work.
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) } }
source share