我在第一个视图控制器中有两个按钮,每个按钮代表一个用户可以玩的游戏(一个宾果游戏和一个记忆游戏)。我通过一个段将这两个按钮从第一个视图控制器传递给第三个视图控制器,并在接收视图控制器(ThirdVC)中创建了两个UIButton变量。
现在,我需要在第三视图控制器中创建一个条件语句,用于当用户按下第一视图控制器中的宾果按钮时,用户进入宾果游戏以进行游戏,或者如果用户按下第一视图控制器中的记忆游戏按钮,则用户进入记忆游戏以进行记忆游戏。换句话说,如果用户按下宾果游戏按钮,则对宾果游戏执行BingoSegue,或者如果用户按下记忆游戏按钮,则对记忆游戏执行memorySegue。我对如何编写实际的按钮感到困惑,因为IBAction按钮代码在第一个视图控制器中。我已经为此工作了几个星期,并在stackoverflow中进行了研究,但没有成功。我想我需要一个布尔包。任何帮助都将不胜感激!
var bingoButton = UIButton()
var memoryButton = UIButton()
var isSelected = false
override func viewDidLoad() {
super.viewDidLoad()
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
//bingoButton:
if isSelected {
performSegue(withIdentifier: "bingoSegue", sender: sender)
print("bingoSegue")
}
//memoryButton:
if isSelected {
performSegue(withIdentifier: "memorySegue", sender: sender)
print("memorySegue")
}
}发布于 2018-06-21 00:22:12
在故事板中,您可以通过控制从按钮拖动到特定的目标视图控制器来添加两个不同的segues。这样,您就不必在代码中手动执行检查和排序:

如果你必须将数据从第一个视图控制器传递到“游戏视图控制器”,你可以命名这些segues并在第一个视图控制器的prepareForSegue函数中检查它们:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "Bingo" {
// ...
} else if segue.identifier == "Memory" {
// ...
}
}发布于 2018-06-21 00:22:21
好的,重置。你搞砸了一点。你可以用不同的方法来实现你的目标,最简单的方法是,如果你不需要将数据从第一个ViewController传递到其他VC,是这样的:
我假设故事板由3个视图控制器组成。第一个VC有两个按钮。通过这样做,您可以轻松实现您的目标:
如果您需要将数据从第一个VC传递到游戏VC,您有各种选择,这些选项的解释起来会稍微复杂一些
发布于 2018-07-24 23:58:16
我得到了解决方案的帮助。这就是它:
创建新的swift文件:
import Foundation
import UIKit
enum Game {
case bingo
case memory
}在第一个视图控制器中,您将每个按钮分配给每个游戏,并将它们移动到第二个视图控制器:
var gameToPlay: Game? = nil
@IBAction func playBingoButton(_ sender: AnyObject) {
gameToPlay = Game.bingo
self.performSegue(withIdentifier: "GameSegue", sender: self)
print("BingoGame")
}
@IBAction func playMemoryButton(_ sender: Any) {
gameToPlay = Game.memory
self.performSegue(withIdentifier: "GameSegue", sender: self)
print("MemoryGame")
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let secondViewController = segue.destination as? SecondViewController {
secondViewController.gameToPlay = self.gameToPlay
}
}在第二个视图控制器中,将按钮传递给第三个视图控制器:
var gameToPlay: Game? = nil
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let thirdViewController = segue.destination as? thirdViewController {
thirdViewController.gameToPlay = self.gameToPlay
}
}在第三个视图控制器中,用户选择他们想要在我的应用程序中播放的词汇。这就是为什么我有一个名为"vocabularyButtons“的按钮,并将代码放在这里的原因。当用户选择他们想要玩的词汇时,用户将转到他们在第一个视图控制器中选择的游戏。
var gameToPlay: Game? = nil
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
@IBAction func vocabularyButtons(_ sender: Any) {
if let gameToPlay = gameToPlay {
switch (gameToPlay){
case .bingo:
performSegue(withIdentifier: "BingoSegue", sender: sender)
case .memory:
performSegue(withIdentifier: "MemorySegue", sender: sender)
}
}
}
}https://stackoverflow.com/questions/50952614
复制相似问题