我使用 Swift 制作iOS应用程序,即Rock,Paper和Scissors。
当您按下哪个按钮(带有摇滚图片,纸张图片或剪刀图片)时,它将转到另一个视图控制器并显示它是一个平局,一个胜利或一个损失(比较您的数字[即。摇滚按钮是1]到计算机的随机数)。但是它不会显示结果,因为它需要在按钮中,而不是在按钮之外和viewDidLoad()中。
我会给你代码的片段。我在下一个View Controller中使用函数来返回一个字符串。
所以我需要帮助的是将userNum和computerNum传递给按钮中的下一个View Controller(按下时),然后调用该函数并返回String。
var userNum: Int = 0
var computerNum: Int = 0
@IBAction func rock(_ sender: UIButton) {
userNum = 1
computerNum = (Int)(arc4random_uniform(3) + 1)
} //This next code will be in the other View Controller
func chooseWinner(userNum : Int, computerNum : Int) -> String {
if userNum == computerNum {
return "There is a tie"
}else if userNum == 1 && computerNum == 2{
return "You lost!"
}else if userNum == 1 && computerNum == 3{
return "You won!"
}else if userNum == 2 && computerNum == 1{
return "You won!"
}
else if userNum == 2 && computerNum == 3{
return "You lost!"
}else if userNum == 3 && computerNum == 1{
return "You lost!"
}
else if userNum == 3 && computerNum == 2{
return "You won!"
}else{
return "value"
}
}
答案 0 :(得分:3)
在情节提要编辑器中,在按住左键的同时按住Ctrl
,然后将鼠标拖动到要切换到的目标视图控制器。释放鼠标后,您可以选择一种segue类型,例如show
。
这将允许您转到目标视图控制器,而无需像编码一样以编程方式创建IBAction
。
在源视图控制器中,添加函数
prepare(for segue: UIStoryboardSegue, sender: Any?)
这将允许您在segueing之前检查segue并进行任何其他设置。
请记住在Attribute Inpector
中设置segue的标识符内部源视图控制器
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "destination" {
//OtherViewController is a placeholder for the viewcontroller class of your destination viewcontroller
if let destinationVC = segue.destinationViewController as? OtherViewController {
destinationVC.userNum = 1
destinationVC.computerNum = (Int)(arc4random_uniform(3) + 1)
}
}
}
内部目标视图控制器
var userNum: Int!
var computerNum: Int!
override func viewDidLoad() {
super.viewDidLoad()
//do wtv you need with your values
print(chooseWinner(userNum: userNum, computerNum: computerNum))
}