首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Conditional和UIButton

Conditional和UIButton
EN

Stack Overflow用户
提问于 2018-06-21 00:05:33
回答 4查看 136关注 0票数 0

我在第一个视图控制器中有两个按钮,每个按钮代表一个用户可以玩的游戏(一个宾果游戏和一个记忆游戏)。我通过一个段将这两个按钮从第一个视图控制器传递给第三个视图控制器,并在接收视图控制器(ThirdVC)中创建了两个UIButton变量。

现在,我需要在第三视图控制器中创建一个条件语句,用于当用户按下第一视图控制器中的宾果按钮时,用户进入宾果游戏以进行游戏,或者如果用户按下第一视图控制器中的记忆游戏按钮,则用户进入记忆游戏以进行记忆游戏。换句话说,如果用户按下宾果游戏按钮,则对宾果游戏执行BingoSegue,或者如果用户按下记忆游戏按钮,则对记忆游戏执行memorySegue。我对如何编写实际的按钮感到困惑,因为IBAction按钮代码在第一个视图控制器中。我已经为此工作了几个星期,并在stackoverflow中进行了研究,但没有成功。我想我需要一个布尔包。任何帮助都将不胜感激!

代码语言:javascript
运行
复制
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")

}
}
EN

回答 4

Stack Overflow用户

发布于 2018-06-21 00:22:12

在故事板中,您可以通过控制从按钮拖动到特定的目标视图控制器来添加两个不同的segues。这样,您就不必在代码中手动执行检查和排序:

如果你必须将数据从第一个视图控制器传递到“游戏视图控制器”,你可以命名这些segues并在第一个视图控制器的prepareForSegue函数中检查它们:

代码语言:javascript
运行
复制
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "Bingo" {
        // ...
    } else if segue.identifier == "Memory" {
        // ...
    }
}
票数 1
EN

Stack Overflow用户

发布于 2018-06-21 00:22:21

好的,重置。你搞砸了一点。你可以用不同的方法来实现你的目标,最简单的方法是,如果你不需要将数据从第一个ViewController传递到其他VC,是这样的:

我假设故事板由3个视图控制器组成。第一个VC有两个按钮。通过这样做,您可以轻松实现您的目标:

  • 擦除你在视图控制器中编写的代码(这是错误的),在故事板中的
  • 中单击鼠标右键而不松开bingoButton,在宾果视图控制器上拖动光标,松开鼠标键。在上下文菜单中选择第一个选项:“Show”
  • 对内存视图控制器上的memoryButton执行相同的操作。

如果您需要将数据从第一个VC传递到游戏VC,您有各种选择,这些选项的解释起来会稍微复杂一些

票数 0
EN

Stack Overflow用户

发布于 2018-07-24 23:58:16

我得到了解决方案的帮助。这就是它:

创建新的swift文件:

代码语言:javascript
运行
复制
import Foundation
import UIKit

enum Game {
    case bingo
    case memory
}

在第一个视图控制器中,您将每个按钮分配给每个游戏,并将它们移动到第二个视图控制器:

代码语言:javascript
运行
复制
 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
    }
   }

在第二个视图控制器中,将按钮传递给第三个视图控制器:

代码语言:javascript
运行
复制
  var gameToPlay: Game? = nil

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
     if let thirdViewController = segue.destination as? thirdViewController {
     thirdViewController.gameToPlay = self.gameToPlay

    }
}

在第三个视图控制器中,用户选择他们想要在我的应用程序中播放的词汇。这就是为什么我有一个名为"vocabularyButtons“的按钮,并将代码放在这里的原因。当用户选择他们想要玩的词汇时,用户将转到他们在第一个视图控制器中选择的游戏。

代码语言:javascript
运行
复制
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)
        }   
       }
      }
     }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50952614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档