ios - 从 SKScene 导航到 UIViewController

标签 ios swift swift3 xcode8

我想从 SKScene 导航到 UIViewController。我的代码如下。但是,当单击方法 showViewController() 时, View 不会被导航。我该如何解决这个问题?

我正在使用 SWIFT3XCODE 8.1

class GameScene: SKScene, SKPhysicsContactDelegate {
    func showViewController() {
        print("button clicked")

        self.view!.window!.rootViewController!.performSegue(withIdentifier: "DashboardVIewControllerSegue", sender: self)

    }

}

最佳答案

为了在没有内存问题的情况下实现这一目标,我所做的是。

首先在 Root View Controller 中创建一些协议(protocol)(委托(delegate))。这个 View Controller 包含我们加载 skscene 的 SKView View 。

所以每当你想从 skscene 打开一个新的 View Controller 时,只需调用协议(protocol)。

这是一些代码 在主视图 Controller 中:

protocol GameProtocol {
    func displayViewController()
}

.

extension MainViewController: GameProtocol {

    internal func displayViewController() {


        let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

        let popoverVC = storyboard.instantiateViewController(withIdentifier: "SettingViewController") as! SettingViewController
//        popoverVC.modalPresentationStyle = .fullScreen
//        popoverVC.modalPresentationStyle = .popover
        popoverVC.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)

        popoverVC.view.backgroundColor = UIColor.popBackgroundColor
        popoverVC.modalPresentationStyle = .popover
        popoverVC.popoverPresentationController!.delegate = self
        popoverVC.popoverPresentationController!.sourceView = self.view
        popoverVC.popoverPresentationController!.sourceRect = CGRect(x: 0.5, y: 0.5, width: 0, height: 0)

        popoverVC.preferredContentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)

        self.present(popoverVC,animated: false,completion: nil)
    }
}

我在主 Controller 中有这段代码,用于在需要时弹出警报。在游戏场景中。

在游戏场景中

  func showViewController() {
        let viewe = self.view as! GameSceneView
        viewe.myDelegate?. displayViewController()
    }

希望你明白这一点。

关于ios - 从 SKScene 导航到 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40862727/

相关文章:

ios - CoreData,executeFetchRequest,调用中的额外参数 "Error"

ios - UITextfield 在 UIPageViewController (Swift) 中快速显示和关闭

ios - 避免多行 UILabel 中的单个字符换行

swift - 理解 Swift 3 语法

swift - 从 swift 3 迁移到 swift 4 - 无法将 String 转换为预期的 String.Element

Swift:线程 1:信号 SIGABRT

iphone - 供应商标识符

ios - 在 UITableViewController 中使用 setHighlighted

ios - Alamofire 不执行该 URL

swift - View 不执行 segue