2016-10-20 15 views
1

我試圖顯示從另一個類發送的消息。我正在使用一個函數來做到這一點。但問題是,當我更改ViewController時,消息不顯示。使用函數更新其他類中的標籤

設置消息:

StartViewController().showMessage(message: "Test Message", color: UIColor.green) 

顯示消息:

func showMessage(message: String, color: UIColor){ 

    messageLabel = SKLabelNode(fontNamed: "Verdana") 
    messageLabel.text = message 
    messageLabel.fontSize = 15 
    messageLabel.fontColor = color 
    messageLabel.position = CGPoint(x: self.size.width/2, y: self.size.height/2) 

    self.addChild(messageLabel) 
} 

(這些是2個不同的文件和ViewControllers)

感謝您的幫助!

+0

'StartViewController()'正在初始化一個新的'StartViewController'然後調用該方法。你需要引用你當前的'StartViewController'。 – Caleb

+0

@Caleb感謝您的回答!我可以問你我該怎麼做?我無法在Google上找到關於此的教程。 –

+0

@stefffeyens您好steff,您可以在XCode 8 - File - New - Project(選項卡應用程序)中找到一個有用的項目,然後選擇Game。在這裏你可以看到一個帶有'Hello world'標籤的SpriteKit演示。希望它能幫助你。 –

回答

2

我覺得這裏有一點點混亂在UIKitSpriteKit之間。

A ViewController沒有會員addChild,我想你會說一下SKNode的對象。

SpriteKit,如果你想顯示SKNode元素或繼承SKNode的對象,首先你要拋棄你的觀點作爲SKView然後實例化和呈現SKScene,例如在解釋說,「你好世界」項目:

class GameViewController: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     if let view = self.view as! SKView? { 
      // Load the SKScene from 'GameScene.sks' 
      if let scene = SKScene(fileNamed: "GameScene") { 
       // Set the scale mode to scale to fit the window 
       scene.scaleMode = .aspectFill 
       // Present the scene 
       view.presentScene(scene) 
      } 
      view.ignoresSiblingOrder = true 
      view.showsFPS = true 
      view.showsNodeCount = true 
     } 
    } 
} 
class GameScene: SKScene { 
    override func didMove(to view: SKView) { 
     print("This is my GameScene, here I could show my SKLabelNode") 
    } 
} 

此外,在SpriteKit你沒有需要改變的viewController,以顯示你的元素,你可以提出一個新的SKScene或直接在顯示SKNode


爲了幫助你瞭解你的函數,你也可以這樣做:

func showMessage(message: String, color: UIColor,pos:CGPoint)->SKLabelNode{ 
     let messageLabel = SKLabelNode(fontNamed: "Verdana") 
     messageLabel.text = message 
     messageLabel.fontSize = 15 
     messageLabel.fontColor = color 
     return messageLabel 
} 

使用

let messagePos = CGPoint(x: self.size.width/2, y: self.size.height/2) 
let messageLabel = showMessage(message:"Test Message", color: UIColor.green, pos:messagePos) 
self.addChild(messageLabel) 
0

存放在性能和推新的VC /目前它

self.startVC = StartViewController() 
self.navigationController?.pushViewController(self.startVC, animated: true) 

當你想要顯示的消息只是調用showMessage() FUNC

self.startVC.showMessage() 
相關問題