【问题标题】:Swift 3 Check which segue was usedSwift 3 检查使用了哪个 segue
【发布时间】:2017-03-02 15:28:14
【问题描述】:

我创建了一个游戏,首先向用户显示一个主屏幕。如果用户选择玩游戏,按钮和背景消失,游戏以 SKScene 的形式开始。然后当玩家死亡时,会自动切换到第二个视图控制器。然后有两个按钮形式的选项供用户使用。菜单或重新启动。两个 segue 都指向同一个视图控制器。我如何区分这两个 segue,以便在第一个视图控制器中它会相应地使用或显示菜单。

【问题讨论】:

标签: ios swift uiviewcontroller uibutton swift3


【解决方案1】:

假设您为每个segue设置了一个标识符,您可以通过prepare(for segue: UIStoryboardSegue, sender: Any?)方法检查哪个segue将执行,在ViewController中实现它并检查segue.identifier

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "firstSegue" {
      // .. do somtheing
    } else if segue.identifier == "secondSegue" {
        // .. do something
    }
}

希望这会有所帮助。

【讨论】:

  • @Arthur 只是不要忘记将 firstSeguesecondSegue 设置为故事板中转场的标识符。
  • @alexburtnik 没错,我提到“假设您为每个 segue 设置一个标识符......”
  • 如果我在 if 语句中发送了一个变量 x,它的值会根据它使用的 if 语句而改变,我将使用什么代码将其发送到第一个视图
【解决方案2】:

你的 segues 应该有标识符。在您的 prepareForSegue 函数中检查 segue.identifier 以确定下一步要做什么。例如,在 swift 3 中:

func prepareForSegue(segue: UIStoryboardSegue?, sender: AnyObject?)
{
   if segue.identifier == "menuSegue"
   {
     // do menu
   }
   else if segue.identifier == "restartSegue"
   {
     // do restart
   }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 2016-11-06
    • 1970-01-01
    相关资源
    最近更新 更多