Я пытаюсь изменить текст поля на кнопке cick , кнопка вызывается, но на этикетке отображается старый текст.Изменение ярлыка текста мгновенно на кнопке пользовательского интерфейса Нажмите
Если я использую NSUserDefaults для сохранения значения, я должен закрыть приложение и снова открыть его, чтобы увидеть новое значение текстового поля.
Есть ли способ, когда пользователь нажимает кнопку, значение мгновенно восстанавливается на экране?
GameViewController Код
import UIKit
import SpriteKit
class GameViewController: UIViewController {
@IBOutlet var resetText: UIButton!
@IBAction func ResetTextPreseed(sender: AnyObject) {
GameScene().changeText()
}
override func viewDidLoad() {
super.viewDidLoad()
if let scene = GameScene(fileNamed:"GameScene") {
// Configure the view.
let skView = self.view as! SKView
skView.showsFPS = true
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
skView.presentScene(scene)
}
}
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
}
}
GameScene Код
import SpriteKit
class GameScene: SKScene {
let myLabel = SKLabelNode(fontNamed:"Chalkduster")
var text = "Hello, WOrld"
override func didMoveToView(view: SKView) {
/* Setup your scene here */
myLabel.text = text
myLabel.fontSize = 45
myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
self.addChild(myLabel)
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
}
func changeText(){
text = "I got changed"
myLabel.text = text
self.addChild(myLabel)
print ("The value of text is \(text)")
}
}
спасибо. Ваш вариант 1 не работал, но я пошел на второй вариант, и теперь я конвертирую все в SpriteKit вместо использования UIView. –
@Alexander Если это не сработало, это потому, что у вас где-то ошибка. Он должен работать, я его протестировал. Может быть, у нас разные настройки в раскадровке ... Но, как я уже сказал, я бы рекомендовал вариант два. В любом случае рад услышать, как вы решили, куда идти. Если у вас возникнут дополнительные вопросы, не стесняйтесь спрашивать. – Whirlwind