gpt4 book ai didi

ios - 从另一个没有参数的方法调用 IBAction

转载 作者:搜寻专家 更新时间:2023-10-30 22:06:04 24 4
gpt4 key购买 nike

在我的程序中,应该轮流调用 2 个函数(IBAction player.Move(UIButton)autoMove())直到所有字段 (UIButtons)已被点击。为此,我创建了一个函数 play()。但是,我不知道如何将 IBAction playerMove 放在 play() 函数中,因为我在这里不需要参数。
我找到了一些答案并尝试了 self.playerMove(nil)self.playerMove(self) 但它不起作用。

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)
}

}

最佳答案

要么您必须调用playerMove:没有按钮,在这种情况下你必须声明 sender作为可选参数。喜欢:

@IBAction func playerMove(sender: UIButton?) {

UIButton意味着你必须传入一个按钮。 nil不是按钮,而是带有 UIButton? ,也就是说 Optional<UIButton> , nil是一个有效值,表示没有按钮。

或者您必须确定要将哪个按钮传递给playerMove:让它做你想做的事。坐下来弄清楚你想要发生什么,以及代码需要做什么才能实现这一点。

关于ios - 从另一个没有参数的方法调用 IBAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27379593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com