2015-02-25 8 views
0

У меня есть обычный контроллер представления, и я хочу, чтобы показать другую ViewController, содержащий SCNViewPresent SCNView от другого ViewController

Если я использую presentViewController или showViewController его не работает. Он закончил немедленно. Я имею в виду, сцена не показывает.

Спасибо за ответы!

Извините за мой плохой английский

Позволяет описать свой проект. У меня есть ViewContrioller, который содержит главное меню, и у меня есть SCNView, который содержит падение кости. Это ViewController, который содержит SCNView:

self.scene = [SCNScene sceneNamed:@"dice.dae"]; 
    self.scene.physicsWorld.gravity = SCNVector3Make(0, -16, 0); 
    self.scene.physicsWorld.speed = 2.5; 

    self.cameraNode = [SCNNode node]; 
    self.cameraNode.camera = [SCNCamera camera]; 
    [self.scene.rootNode addChildNode:self.cameraNode]; 
    self.cameraNode.position = SCNVector3Make(0, 20, 20); 
    self.cameraNode.transform = SCNMatrix4Rotate(self.cameraNode.transform,M_PI/3.0, -5, 0, 0); 


    self.diceNode = [self.scene.rootNode childNodeWithName:@"dice" recursively:YES]; 

    SCNPhysicsBody* diceBody = [SCNPhysicsBody bodyWithType:SCNPhysicsBodyTypeDynamic shape:[SCNPhysicsShape shapeWithNode: self.diceNode options:nil ]]; 
    self.diceNode.physicsBody = diceBody; 
    CGFloat zVelocity = arc4random()%10+5; 
    CGFloat xVelocity = arc4random()%5; 
    self.diceNode.physicsBody.velocity = SCNVector3Make(xVelocity, 0, -zVelocity); 
    CGFloat xAngVelocity = arc4random()%12 + 5; 
    CGFloat yAngVelocity = arc4random()%4 + 1; 
    CGFloat zAngVelocity = arc4random()% 13 + 9; 
    self.diceNode.physicsBody.angularVelocity = SCNVector4Make(-xAngVelocity, yAngVelocity, -zAngVelocity, 0.8); 
    self.diceNode.physicsBody.mass = 100.0; 
    self.diceNode.physicsBody.friction = 1; 
    SCNNode *field = [self.scene.rootNode childNodeWithName:@"field" recursively:YES]; 
    field.physicsBody = [SCNPhysicsBody bodyWithType:SCNPhysicsBodyTypeStatic shape:[SCNPhysicsShape shapeWithNode:field options:nil]]; 
    field.physicsBody.friction = 1; 
    self.scnView = (SCNView *)self.view; 
    self.scnView.frame = self.view.frame; 
    self.scnView.scene = self.scene; 
    self.scnView.allowsCameraControl = YES; 
    self.scnView.showsStatistics = YES; 
    self.scnView.backgroundColor = [UIColor blackColor]; 
    self.scnView.delegate = self; 

Я пытаюсь показать это ViewController из главного меню

DiceScene* dice = [[DiceScene alloc] init]; 
    [self presentViewController:dice animated:YES completion:^{ 
     NSLog(@"completion"); 
    }]; 

И мой DiceScene does't шоу, это завершение сразу без ошибок.

+2

Можете ли вы предоставить некоторый код, что у попробовали. –

+0

поэтому 'DiceScene' является подклассом' UIViewController' (а не 'SCNScene'??). Как настроен 'self.view' (код или IBOutlet)? Вы уверены, что это не 'nil'? – mnuages

+0

Если ViewController с DiceScene является начальным контроллером представления его работы, но если я его вызову из другого ViewController, это не сработает – DimaiOSDeveloper

ответ

0

Попробуйте это:

в ViewController:

DiceScene* dice = [[DiceScene alloc] init]; 
[self setView:dice]; 
Смежные вопросы