iOS - 如何在没有按下按钮的情况下在视图控制器之间移动

时间:2015-07-31 18:10:03

标签: ios swift sprite-kit

我正在努力将UI视图控制器更改为屏幕上的游戏,在此屏幕上我计划显示分数,重置和广告。我将向您展示我已经在下面的代码,我将列出我的项目的设置方式。

一旦检测到碰撞状态

,游戏就会运行

Thread 1 EXC_BAD_INSTRUCTION (code=EXC1386_INVOP,subcode=0x0)

以下是我目前使用的代码......

import SpriteKit

class GameScene: SKScene, SKPhysicsContactDelegate {

var viewController: GameViewController!
var secondViewController: GameOverViewController!


override func didMoveToView(view: SKView) {

//lots of code here

func didBeginContact(contact: SKPhysicsContact) {

    if( moving.speed > 0 ) {
        moving.speed = 0;

self.viewController.performSegueWithIdentifier("GameOverViewController", sender: self)

}

我目前有以下设置:

  • 我的两个视图控制器文件GameViewController.swift& GameOverViewController.swift
  • 除了我当前的GameViewController视图外,我的故事板上还有一个新的视图控制器,具有以下属性.... Class:GameOverViewController& Storyboard ID:GameOVerViewController
  • GameViewControllerGameOverViewController
  • 设置(推送)触发的segue
  • A然后在我的GameScene.Swift文件中有以下代码

如果有人能帮助我那会很棒。

谢谢。

3 个答案:

答案 0 :(得分:1)

除非您没有正确设置故事板,否则

performSegue:withIdentifier:应该有效。

您在执行performSegue:withIdentifier:时遇到什么错误?

您是否在连接两个视图控制器的故事板中设置了segue,并且该segue是否具有名为secondViewcontroller的标识符?

看看这个Storyboard tutorial

答案 1 :(得分:0)

也许你试图在没有导航堆栈的情况下推动视图控制器,如果是你的情况,尝试以模态方式呈现你的视图控制器,同时检查你如何连接segue。抱歉我的英语不好。

答案 2 :(得分:0)

将您的performSegue调用更改为

belongs_to :home_team, class_name: 'Club', foreign_key: 'Home_Team', primary_key: 'ClubKey'

重新测试。你得到同样的错误吗?如果是这样,您还没有正确命名您的segue。 Interface Builder中设置的segue名称必须与您尝试在代码中调用的segue名称完全匹配。要解决此问题:在界面构建器中选择segue,将标识符框读取为正确的名称,更新您的performSegue调用以使用该字符串并重建。 (如果更新“接口”构建器中的标识符,请确保在重建之前清理项目以确保拾取新符号。)

但是,如果测试导致不同的错误,“'Receiver<>没有带标识符'DOES_NOT_EXIST'的segue”,那么您的原始执行segue调用工作正常。把它放回原来的样子。还有其他因素导致你的崩溃。