为什么我的 ViewController 重新打开后不显示另一个 SKScene?

2024-04-14

所以现在我正在编写一个游戏,但遇到了一个我没有真正找到解决方案的问题。我会尽力为你描述它。

所以,为了能够更好地解释我的问题,我为你们创建了一个示意图:

现在问题是:我有两个视图控制器,一个称为MenuVc,另一个称为GameVC. In GameVC我有一个SKView这显示了一个特定的SKScene when didMoveToView被称为,被命名GameScene. GameScene has a didBeginContact方法,然后将移动到另一个SKScene the SKView有,称为GameOverScene,使用以下代码(图中的 Segue 1):

let reveal = SKTransition.crossFadeWithDuration(0.5)
let gameOverScene = GameOverScene(size: self.size, won: false)
self.view?.presentScene(gameOverScene, transition: reveal)

从这里,用户可以返回GameScene以重新开始游戏(图中的 Segue 2)。在GameScene,还有另一个按钮,可以让您返回到MenuVC via a NSNotificationCenter事件(图中的Segue 3)。其代码如下:

在 GameViewController.swift 中:

override func awakeFromNib() {
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "goToMenuViewController:", name: "GoToMenuViewController", object: nil)
}

@objc func goToMenuViewController(notification: NSNotification){

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyboard.instantiateViewControllerWithIdentifier("MenuVC")
    vc.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve

    self.presentViewController(vc, animated: true, completion: nil)

    }
deinit{
    NSNotificationCenter.defaultCenter().removeObserver(self)
}

在 GameScene.swift 中,当按下 backButton 时:

NSNotificationCenter.defaultCenter().postNotificationName("GoToMenuViewController", object: self)

所以如果我现在想回到GameVC使用按钮MenuVC(图中的 Segue 4),一切正常。这SKView in GameVC显示了GameScene再次,但是当didBeginContact()现在被调用,它不存在GameOverScene。我检查了该函数被调用,并且它也执行了其中的代码,但它没有执行应有的 segue (1) 。您知道我必须改变的原因和内容吗?调用 Segue 3 时是否与 deiniting 有关?

代码为GameVC's viewDidLoad:

let scene = GameScene(size: view.bounds.size)
        let skView = view as! SKView
        skView.ignoresSiblingOrder = true
        scene.scaleMode = .ResizeFill
        skView.presentScene(scene)

Segue 4 的代码:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let vc = storyboard.instantiateViewControllerWithIdentifier("GameVC")
        vc.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve
        self.presentViewController(vc, animated: true, completion: nil)

确保在尝试呈现其他视图控制器之前关闭每个视图控制器。

如果你尝试在另一个已经呈现的视图控制器之上呈现一个视图控制器,我认为 UIKit 并不真正喜欢它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的 ViewController 重新打开后不显示另一个 SKScene? 的相关文章

  • 快速球体结合星数据

    我想构建一个观星应用程序 现在我已经构建了一个球体并用星图覆盖它 基于天体坐标 https svs gsfc nasa gov cgi bin details cgi aid 3895 https svs gsfc nasa gov cgi
  • 在 swift 中获取 NSImage 的 PNG 表示

    嘿 我在获取 NSImage 对象的 PNG 表示时遇到了一些问题 这就是我正在做的 var imgData NSData coverImgView image TIFFRepresentation var bitmap NSBitmapI
  • 如何消除禁用的 UIButton 的灰色外观

    我有一个 UIButton 我希望它处于禁用状态时与处于正常状态时看起来完全相同 现在它看起来有点灰色 不要使用enabled属性或setEnabled NO方法 而是使用 myButton setUserInteractionEnable
  • 如何使用 Objective-C 协议

    我需要将 Picker 选择的值继承到其他地方 我正在尝试下面的代码 但空值即将到来 请检查我哪里出错了 我必须继承在中传递的字符串值PickerView 请检查代码 选取器1 h import
  • 我可以指定泛型是值类型吗?

    我知道我们基本上可以通过使用指定我们的泛型是任何引用类型AnyObject class Foo
  • 如何将设备令牌和应用程序版本发送到服务器

    我已经实现将设备令牌和应用程序版本发送到 serverm 它在模拟器 硬编码数据 中工作正常 但在设备中无法工作 任何形式的帮助将不胜感激 先感谢您 这是代码 void application UIApplication applicati
  • 测试文本字段中的 double 是否有值

    尝试检查从文本字段获得的双变量是否有值 让值 双倍 Double valueTextfield text if value isEmpty X if 值 nil X 如果 值 0 X 我该怎么做呢 您可以使用 Double 的 init 方
  • iOS 以编程方式将 AVI 转换为 MP4 格式

    我的应用程序中有一个查询 因为我想将 AVI 格式的视频转换为 MP4 电影格式 所以有没有什么方法可以以编程方式执行此操作 任何代码片段将不胜感激 你需要使用AVAssetExportSession将视频转换为 mp4格式 下面方法转换
  • 使用自动布局约束时如何获取视图的当前宽度和高度?

    我不是在谈论frame属性 因为从中你只能得到xib中视图的大小 我说的是当视图由于其约束而调整大小时 可能在旋转之后 或响应事件 有没有办法获取当前的宽度和高度 我尝试迭代其约束来寻找宽度和高度约束 但这不是很干净 并且在存在内在约束时会
  • 如何获取通讯录图片数据的裁剪框?

    AddressBook 框架提供 ABPersonCopyImageData 用于获取每个地址簿条目的联系人图像 这对于图像数据来说非常有用 但用户也可以出于框架目的调整图像的大小和裁剪图像 当我获取图像数据时 我得到的是完整图像 而不是裁
  • CoreBluetooth:如何为许多特性(30 - 40)设计代码?

    我搜索了一下 发现这是一个可能重复的问题 同一设备的多个 CBPeripheral https stackoverflow com questions 10836703 multiple cbperipherals for same dev
  • iOS Safari 通过单击按钮触发扫描信用卡

    您好 我目前正在创建一个测试应用程序 当用户单击文本字段名称或卡号时 扫描信用卡功能对我有用 我的问题是 我希望当用户单击 button1 时发生同样的情况 这应该打开相机来扫描卡并填充现有的文本字段 即名称 卡号和到期日期 额外的好处是
  • iOS AFNetworking downloadProgressBlock 计算返回负数

    我正在使用 AFNetworking 下载使用第三方类解析的数据 我之前曾多次使用 AFNetworking 执行类似的操作 但由于某种原因 当我调用 downloadProgressBlock 并进行计算以与我的进度条一起使用时 数字返回
  • 观察 UIDatePicker 的变化

    我注意到没有委托来观察 UIDatePicker 中的变化 有没有一种方法可以在不确认任何内容的情况下检测选择器中何时进行更改 例如它旋转并落在新数字上的那一刻 我希望能够检测到这一点 我考虑过关键值观察 但我不认为有一个属性会立即改变 您
  • Apple 允许后台任务运行多长时间?

    我必须将一系列图像文件上传到数据库 因此 我偶然发现苹果后台执行指南 https developer apple com library ios documentation iPhone Conceptual iPhoneOSProgram
  • WKWebView:无需 Javascript 即可缩放PageToFit 行为

    如何获得scalesPageToFit显示在 HTML 内容中的行为WKWebView 不使用 JavaScript 在我们的例子中需要禁用 JS 抱歉没有发布任何代码 但我不知道如何实现这一目标 我所知道的和我找到的所有解决方案都是基于J
  • 如何连续关闭 2 个模态视图控制器?

    我有 2 个以模态方式呈现的视图控制器 A presents B which presents C 当我解雇C时 我也想解雇B 但我不知道该怎么做 解雇C self dismissModalViewControllerAnimated YE
  • iTunes Connect 中缺少应用内购买部分

    我有一个应用程序处于准备提交状态 我还有该应用程序的应用程序内购买项目 上周我将它们链接到我的应用程序并提交以供审核 周末 开发商拒绝了它 现在我想重新提交修复后的版本 但 IAP 部分完全丢失 我怎样才能让它再次可见 我遇到过同样的问题
  • 通过 Apple 批量购买计划分发自定义 B2B iOS 应用程序?

    我们的要求是为组织内超过 1000 名用户分发 iOS 应用程序 我的问题 我们可以做吗使用 iOS Developer Provisioning Profile 分发 iPA 因为我们有 99 美元的 Apple 帐户 而不是企业帐户 并
  • 如何按字母顺序对 NSMutable 数组中的自定义对象字段进行排序?

    我有一个自定义对象 例如 import

随机推荐

  • 排列函数:lubridate 和 dplyr R 之间的冲突

    我想用该函数重新排列 dfarrange from dplyr 问题是 当我有另一列 比方说 v2 与我想要排列 df 的列不同时 这两个包似乎存在冲突 library dplyr library lubridate start dates
  • 如何找到数组列表的长度? [复制]

    这个问题在这里已经有答案了 我不知道如何找到数组列表的长度 我想你可能需要使用blank length 但我不确定 我做了一个数组列表 ArrayList
  • Git推送:对象为12311134字节,大于此存储库中对象的1048576字节限制

    当尝试将本地环境中所做的一些提交推送到 Azure DevOps Repos origin 时 出现错误 该对象为 12311134 字节 大于此存储库中对象的 1048576 字节限制 我正在通过运行命令 git push origin
  • 如何在桶聚合中进行过滤器聚合?

    我有以下要求 我有一些如下所示的记录 作为示例 agreementid 1 lastdispositioncode PTP feedbackdate 30 11 2020 agreementid 1 lastdispositioncode
  • 找不到任何 X11 字体错误

    我开始进入 R 开发 并且正在遵循一个教程 该教程在某个时刻打开 X11 来显示图形 但是当该窗口打开时 我收到以下错误 轴错误 侧面 侧面 at at 标签 标签 可以 找不到任何 X11 字体 检查字体路径是否正确 在 另外 警告信息
  • WebDriverException:消息:通过 Selenium Chromedriver python 设置 UserAgent 时,“chromedriver”可执行文件需要位于 PATH 中

    我是网络抓取的新手 我正在尝试使用以下行修改我的用户代理 from selenium import webdriver chrome path r C Users Desktop chromedriver win32 chromedrive
  • ECMAScript5 对象和数组的深拷贝

    我希望找到一个示例代码来对 ECMAScript5 中的对象进行深度复制 复制应该可以克隆 嵌套对象 嵌套数组 数组中的嵌套对象 单独克隆每个数组项 注意 jQuery extend 似乎不处理情况 3 另外 我希望用干净的 ECMAScr
  • 将击键从 C# 应用程序发送到 Java 应用程序 - 奇怪的行为?

    我正在尝试将击键从 C 程序发送到 Java 应用程序 发送密钥的代码是 private void SendKeysToWindow string WindowName string KeysToSend IntPtr hWnd FindW
  • 使用 z-index 将 div 置于另一个 div 上方

    我想要div1高于div2 我尝试与z index但它不起作用 我试过这段代码 div width 100px height 100px div1 background red z index 1 div2 background blue
  • 以编程方式将文件上传到 Google 文档

    我的电子书文件夹中有很多大约 50GB 的 pdf 文件 现在我想将它们上传到 Google 文档中 例如 Linux 的 Rsync 是否可以使用 php 或 python 脚本将电子书文件夹和子文件夹中的所有 pdf 文件上传到 Goo
  • 更改<选择多个>中所选选项的颜色[重复]

    这个问题在这里已经有答案了 我遇到这个问题 我需要在单击 选择时更改一个 多个选项元素的颜色 单击时默认颜色为蓝色 我相信我们现在应该有一个解决方案 因为我尝试搜索解决方案但无济于事 希望在 CSS 或 vanilla JS 中做到这一点
  • 在 Office 加载项清单中指定 ~remoteAppUrl 的值

    我正在使用 Outlook 编写一个加载项新框架 http dev office com docs add ins overview office add ins 项目模板中的清单使用 remoteAppUrl来表示网页文件的位置 它在开发
  • 在ggplot2中手动指定刻度标签

    在 ggplot2 中 我有一个图表 其 y 轴位于 log10 x 1 上 我还没有找到直接指定 ggplot2 使用 log10 x 1 刻度的方法 所以我想直接修改 y 轴刻度标签 而不是 0 0 5 1 1 5 和 2 这些刻度将显
  • DRF:如何在保存到数据库之前更改模型字段的值

    如果我需要在保存到数据库之前更改一些字段值 因为我认为模型方法clear 适合 但尽管我竭尽全力 还是无法给他打电话 例如字段email我需要设置为小写和领域nda我需要设置为null 模型 py class Vendors models
  • jQuery colorbox:如何更改颜色框的位置

    默认情况下 颜色框在屏幕上垂直和水平居中显示 有没有办法改变它 例如从顶部垂直调整为 10 水平居中 这将覆盖顶部位置 您可以对 left 等执行相同的操作 colorbox top 100px important 从顶部开始 10 会更棘
  • Windows Azure 网站 python

    经过大量的艰苦工作 我最终得到了一个在 Windows Azure 上运行的 hello world Flask 应用程序 该应用程序是本地构建的并且运行良好 但将其部署到 Azure 是一场噩梦 所以我这里有两个问题 我似乎根本无法获得堆
  • SQL Server 中的行偏移

    SQL Server 有什么方法可以获取从给定偏移量开始的结果吗 例如 在另一种类型的 SQL 数据库中 可以执行以下操作 SELECT FROM MyTable OFFSET 50 LIMIT 25 得到结果51 75 SQL Serve
  • IVY 部分的循环依赖

    在一个项目中 我想将我的库切换到ivy部分编译模式 角度12 但现在遇到了一些令人讨厌的循环依赖错误 Error 从例子 Compiling with Angular sources in Ivy partial compilation m
  • 为什么字符串不等于存储的内容?

    这是一个简单而奇怪的问题 if tableViewNum One if drinkArray objectAtIndex 0 currentDate updatedArray addObject drinkArray NSLog MADE
  • 为什么我的 ViewController 重新打开后不显示另一个 SKScene?

    所以现在我正在编写一个游戏 但遇到了一个我没有真正找到解决方案的问题 我会尽力为你描述它 所以 为了能够更好地解释我的问题 我为你们创建了一个示意图 现在问题是 我有两个视图控制器 一个称为MenuVc 另一个称为GameVC In Gam