我需要帮助在游戏场景中呈现警报视图。我目前正在努力做到这一点,例如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。像那样:
UIAlertController
UIAlertView
alert.show()
但是,UIAlertView已弃用,因此依靠它并不十分安全。
2)更好的解决方案。使您的SKScene子类拥有对用于呈现场景的视图控制器的引用,并在创建场景时为其分配视图控制器:
SKScene
myScene.viewController = self
然后您可以使用它。
self.viewController.presentViewController(alertController, animated: true, completion: nil)