- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
从主菜单 View (UIViewController) 到游戏玩法 (GameViewController.swift - UIViewController),我使用了以下代码,取得了巨大成功。 p>
我还测试了主菜单 View 到游戏结束 View (UIViewController),以确保游戏结束 View 全部正确连接并且工作正常,但是我尝试从 GameScene.swift (SKScene) 调用一个函数到 GameViewController.swift,以在游戏结束时切换 View (游戏结束 View )。
但是我收到 fatal error :在解包可选值时意外发现 nil
为什么我会在尝试通过 GameViewController.swift 移出 GameScene.swift 时收到此错误,但不会从任何其他 UIViewController(如主菜单或游戏结束)中收到此错误?
func goToGameOver() {
print("Fetched: goToGameOver()")
let gameOverController = self.storyboard?.instantiateViewControllerWithIdentifier("GameOverController") as? GameOverController
gameOverController!.missionMode = missionMode
gameOverController!.missionLevel = missionLevel
self.navigationController?.pushViewController(gameOverController!, animated: true)
}
如果您需要更多信息来帮助,请告诉我。
感谢大家的帮助!
<小时/>更新代码
我的 Storyboard被命名为Main.storyboard
我已经通过基于代码和下面的答案进行了更新,正如您在评论中看到的那样,我不再收到任何错误,但我也没有看到 View 从 GameScene 到 GameOverController View 的更改/切换.
func goToGameOver() {
print("Fetched: goToGameOver()")
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let gameOverController = storyboard.instantiateViewControllerWithIdentifier("GameOverController") as? GameOverController
gameOverController!.missionMode = missionMode
gameOverController!.missionLevel = missionLevel
self.navigationController?.pushViewController(gameOverController!, animated: true)
}
<小时/>
更新以显示 Storyboard设置。
是否会因为我的游戏场景 Controller (UIViewControllers) 进入 SKScene 而导致导航 Controller 损坏而没有响应?奇怪的是我没有收到任何错误......
左上角:导航 Controller
顶部中心:主手动 Controller
右上角:游戏场景 Controller
底部中心:游戏结束 Controller
<小时/>更新提供 GameViewController.swift
这是我的游戏 View Controller ,我没有分配导航 Controller ,因为我似乎不需要在主菜单 Controller 或游戏结束 Controller 中执行此操作。我怎样才能在swift中分配navigationController?
import UIKit
import SpriteKit
import iAd
class GameViewController: UIViewController, ADBannerViewDelegate {
var iAdBanner = ADBannerView()
var bannerVisible = false
var missionMode: Bool!
var missionLevel: Int!
override func viewDidLoad() {
super.viewDidLoad()
if let scene = GameScene(fileNamed:"GameScene") {
// Configure the view.
let skView = self.view as! SKView
skView.showsFPS = true
scene.size = skView.bounds.size
skView.showsNodeCount = true
/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = true
/* Set the scale mode to scale to fit the window */
scene.scaleMode = .AspectFill
scene.missionMode = missionMode
scene.missionLevel = missionLevel
skView.presentScene(scene)
}
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
iAdBanner.frame = CGRectMake(0, -iAdBanner.frame.height, self.view.frame.width, 0)
iAdBanner.delegate = self
bannerVisible = false
}
func bannerViewDidLoadAd(banner: ADBannerView!) {
if(bannerVisible == false) {
// Add banner Ad to the view
if(iAdBanner.superview == nil) {
self.view.addSubview(iAdBanner)
}
// Move banner into visible screen frame:
UIView.beginAnimations("iAdBannerShow", context: nil)
banner.frame = CGRectOffset(banner.frame, 0, banner.frame.size.height)
banner.alpha = 1
UIView.commitAnimations()
bannerVisible = true
}
}
func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
if(bannerVisible == true) {
// Move banner below screen frame:
UIView.beginAnimations("iAdBannerHide", context: nil)
banner.frame = CGRectOffset(banner.frame, 0, -banner.frame.size.height)
banner.alpha = 0
UIView.commitAnimations()
bannerVisible = false
}
}
func goToGameOver() {
print("Fetched: goToGameOver()")
let storyboard = UIStoryboard(name: "Main", bundle: nil)
print(storyboard)
let gameOverController = storyboard.instantiateViewControllerWithIdentifier("GameOverController") as! GameOverController
gameOverController.missionMode = missionMode
gameOverController.missionLevel = missionLevel
print(gameOverController)
self.navigationController?.pushViewController(gameOverController, animated: true)
}
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
return .AllButUpsideDown
} else {
return .All
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Release any cached data, images, etc that aren't in use.
}
override func prefersStatusBarHidden() -> Bool {
return true
}
}
最佳答案
我不知道你的 Storyboard是如何初始化的,但你可以在你的项目中指定你的 Storyboard
func goToGameOver() {
print("Fetched: goToGameOver()")
let storyboard = UIStoryboard(name: "YourStoryBoardName", bundle: nil)
let gameOverController = storyboard.instantiateViewControllerWithIdentifier("GameOverController") as? GameOverController
gameOverController!.missionMode = missionMode
gameOverController!.missionLevel = missionLevel
self.navigationController?.pushViewController(gameOverController!, animated: true)
}
应该可以
关于ios - 尝试使用 Storyboard ID 从 GameScene 移动到 ViewController 时发生 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33346977/
下面的代码旨在在首次打开工作簿时运行。 Sub Auto_Open() Dim LastRow As Integer LastRow = Sheet6.UsedRange.Rows.Count Act
当我尝试操作我的代码时,除了弹出调试错误外,它执行得很好。错误信息在这里。 我的完整代码在这里。 #include using namespace std; class String { publi
The invocation of the constructor on type 'WpfApplication1.MainWindow' that matches the specified bi
我正在使用 BaseAdapter: public class MyAdapter extends BaseAdapter{ private final LayoutInflater mInflate
我想做网页抓取。我写了代码 var connection = require('./mysqlConnection'); var c = new Crawler({ maxConnections
我的系统中发生 Java 堆空间错误。我尝试了很多来自 Stack Overflow 的解决方案,但没有任何效果。当我工作时 当按下 OK 然后 (我的项目没有错误) 我的 eclipse.ini 是
环境: i5 750 DDR3 4GWin7 专业版 x64 sp1 DXSDK 9.0c 2010 年 6 月 GeForce GT240(驱动程序 275.33)512MB MSVC 2008 s
这段代码是我写的。 import socket host = 'localhost' port = 3794 s = socket.socket(socket.AF_INET, socket.SOCK
我正在尝试引用 UTC 时间间隔获取本地日期时间,我正在执行下面的代码。 var dtString =DateTime.UtcNow.ToString(@"yyyy-MM-ddTHH\:mm\:ss
我有一个非常简单的 C# 问题,它从库中加载 Windows WPF 窗口。这是代码: public partial class App : Application { public App(
我目前正在使用带有导航组件的底部导航,它工作正常但是当我们点击导航项 fragment 正在加载然后闪烁正在发生,即使当前选择的项目也会发生闪烁。它在加载 fragment 时发生。我的应用程序屏幕背
我是新来的 kotlin , 当我开始 Null Safety 时,我对下面的情况感到困惑. There's some data inconsistency with regard to initia
我有一个框,其中包含同时发生的两个独立的 css 转换。 当转换发生时,图标下方的标题和段落文本移动位置 参见 JS Fiddle:http://jsfiddle.net/Lsnbpt8r/ 这是我的
在为黑莓 10 构建电话间隙应用程序时,我遇到了异常情况。 [BUILD] Populating application source [BUILD] Parsing config.xml [
这个问题在这里已经有了答案: How to properly stop the Thread in Java? (8 个回答) 3年前关闭。 我看过How to properly stop the T
我试图弄清楚发生 fatal error 时如何刷新页面。基本上我正在访问图像 api 并将图像复制到我的服务器。我还每次都创建照片的缩略图版本。我会每隔一段时间收到一条错误消息,指出我的脚本试图分配
我正在尝试使用断言函数检查元素是否在屏幕上。我在我的测试应用程序 (AndroidDriver) 中使用 Appium 和 Java。我期望的是,如果元素在屏幕上,则返回 1;如果不在屏幕上,则返回
我正在开发图像上传系统。我使用 CommonsMultipartResolver 设置 maxUploadSize。当我尝试上传超过最大尺寸的图像文件时,会发生 MaxUploadSizeExcced
我有以下代码和@ComponentScan(basePackages = "com.project.shopping"),包结构为 com.project.shopping.Controller co
我尝试运行此程序作为测试,但收到错误“发生了 JNI 错误,请检查您的安装并重试”,然后是“发生了 Java 异常”。关于如何解决这个问题有什么想法吗? package java; public cl
我是一名优秀的程序员,十分优秀!