【问题标题】:Present View from SKScene in Xcode 6 with Swift使用 Swift 在 Xcode 6 中呈现来自 SKScene 的视图
【发布时间】:2014-08-09 22:22:37
【问题描述】:

我有一个专门作为 SKScene 运行的基本游戏。我想转换到一个名为 testview.xib 的视图,但我找不到任何 Swift 示例来说明如何转换。

这是我基于其他答案的尝试

let vc = UIViewController(nibName: "testview", bundle: nil) as UIViewController
self.view.window.rootViewController.presentViewController(vc, animated: true, completion: nil)

但应用程序失败并出现错误“Thread1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode 0x0)”

SKScenes之间移动的代码是

var transition:SKTransition = SKTransition.flipHorizontalWithDuration(1)
var scene:SKScene = otherScene(size: self.size)
self.view.presentScene(scene, transition: transition)

【问题讨论】:

  • 您能澄清一下您遇到问题的地方吗?当您尝试发布的代码时会发生什么?您的应用程序是否崩溃,是否出现任何特定错误等?
  • 当然。我有一个名为 testview.xib 的视图。我正在尝试从运行 xcode 6.4 的 iOS 7.1 SDK 中的 SKScene 呈现此视图。我最近尝试过let vc = UIViewController(nibName: "testview", bundle: nil) as UIViewController self.view.window.rootViewController.presentViewController(vc, animated: true, completion: nil) ,但由于“线程 1:EXC_BAD_INSTRUCTION”而失败
  • 谢谢。乍一看,它看起来应该可以工作。您可以编辑原始问题并添加整个堆栈跟踪吗?我不确定你为什么会得到EXC_BAD_INSTRUCTION,但堆栈跟踪应该提供更多上下文。
  • 谢谢 - 这有帮助吗?
  • 这并没有真正阐明它,抱歉。您是否尝试过升级到 Xcode6 Beta5(您说您正在运行 Xcode 6.4;我假设您的意思是 Beta4)? EXC_BAD_INSTRUCTION 可能是由编译器为 CPU 发出错误指令引起的,因此它可能是一个 swift 编译器错误。

标签: swift sprite-kit skscene xcode6


【解决方案1】:

结果证明这是从类的 init() 方法中调用 presentViewController() 时出现的问题。基本上,您不能在设置视图/控制器之前调用presentViewController();相反,您通常希望在发生某些操作(按钮按下、触摸事件等)时调用它。

在 cmets 中开始讨论然后移至 chat 的问题已通过从情节提要而不是 xib 加载视图控制器来解决。注意:xib 可以工作,但设置起来比故事板要复杂。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 2016-07-27
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多