当前位置: 首页 > 面试题库 >

Swift&SpriteKit-如何在GameScene中显示警报视图

皇甫伟彦
2023-03-14
问题内容

我需要帮助在游戏场景中呈现警报视图。我目前正在努力做到这一点,例如GameScene.Swift不是标准的ViewController。如果有帮助,我需要这样做,因为我需要用户输入一个值,该值用作游戏中球Sprite
Kit节点的坐标。输入只是一个标准整数,因此这不是问题。也欢迎通过警报视图实现此操作的其他任何想法。

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()

    let view = self.view as! SKView

    if view.scene == nil {

        view.showsFPS = false
        view.showsNodeCount = false

        let gameScene = GameScene(size: view.bounds.size)
        gameScene.scaleMode = SKSceneScaleMode.AspectFill
        view.presentScene(gameScene)
    }


}

那是在GameViewController文件中

    var vc : GameViewController!



override init(size: CGSize) {
    super.init(size: size)

    let alertController = UIAlertController(title: "Bll Starting Position", message: "Please Enter a X Coordinate Value IN Range 0 to 345 ", preferredStyle: .Alert)
    alertController.addTextFieldWithConfigurationHandler { (textField) in
        textField.placeholder =  "Value Must Be In Range 0 To 345"
        textField.autocapitalizationType = UITextAutocapitalizationType.None
        textField.autocorrectionType = UITextAutocorrectionType.No
        textField.clearsOnBeginEditing = true
        textField.clearsOnInsertion = true
        textField.clearButtonMode = UITextFieldViewMode.Always
        let cancelBtn = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)
        let confirmBtn = UIAlertAction(title: "Confirm", style: .Default, handler: { (confirmView) in
            if let field = alertController.textFields![0] as? UITextField {

            }
        })
        alertController.addAction(confirmBtn)
        alertController.addAction(cancelBtn)
        self.vc.presentViewController(alertController, animated: true, completion: nil)

    }

谢谢


问题答案:

可能有以下选项:

1)快速解决。不要使用UIAlertController,使用UIAlertView。像那样:

alert.show()

但是,UIAlertView已弃用,因此依靠它并不十分安全。

2)更好的解决方案。使您的SKScene子类拥有对用于呈现场景的视图控制器的引用,并在创建场景时为其分配视图控制器:

myScene.viewController = self

然后您可以使用它。

self.viewController.presentViewController(alertController, animated: true, completion: nil)


 类似资料:
  • 在Android应用程序中,我想在AlertDialog中显示自定义列表视图。 我该怎么做呢?

  • 问题内容: 我有一个包含子视图的视图控制器。在子视图类中,当满足某些条件时,我可能需要弹出警报。 从代码中可以看到,由于我的子视图不是控制器类,因此无法调用presentViewController函数来显示警报。我应该以某种方式在子视图内创建对父控制器的一周引用吗?实施此类参考的最佳实践是什么? 问题答案: 有几种方法可以使您抓住自己的生活。 您可以将任何视图控制器作为 委托 来显示警报; 您可

  • 问题内容: 我想“重置”和“重启” GameScene,就好像第一次调用GameScene一样。我已经研究了执行此操作的不同方法,但是每次收到警告时,我都试图将节点添加到已具有父级的父级。但是,在我的代码中,我删除了所有现有节点,因此我对如何重置GameScene感到非常困惑。这就是我现在的操作方式(当我想从头开始重新启动GameScene时调用此代码,并在GameScene类中调用此代码): 1

  • 问题内容: 我想将两个唯一的警报附加到同一视图。当我使用下面的代码时,只有底部的警报起作用。 我正在macOS Catalina上使用Xcode 11的正式版本。 我希望在设置为true 时显示第一个警报,而在我设置为true时希望显示第二个警报。只有第二个警报显示其状态为true时,但第一个警报不执行任何操作。 问题答案: 第二个调用覆盖了第一个。您真正想要的是指示是否显示警报,以及应该从闭包后

  • 问题内容: 如何在警告框或确认框中显示图像?我一直在尝试下面的代码,但在警告框中获取图像URL。请任何人帮助我获得解决,或者如果无法解决,请提出其他建议。 问题答案: JavaScript中的警报框只能显示纯文本。您可以使用jQuery之类的JavaScript库来显示模式吗? 您可以这样做:

  • 问题内容: 我正在使用Swift在SpriteKit中制作游戏。 在Objective-C中,我可以使用以下方法: 对此执行操作,但是我无法在Swift中使用此功能。基本上,我不知道如何在Swift中引用该节点。 这是我正在使用的代码,但是“ usingBlock:”部分遇到了麻烦。我已经尝试了很多小时,但没有成功。请帮助! 问题答案: 目前,不要相信自动完成功能会插入所需的代码-它会从“标头”中