2016-06-19 4 views
1

私はゲームをプログラミングしています。それは言葉遊びです。 ゲームのページは常に異なるコンテンツで同じです。 instantiateViewControllerWithIdentifier( "SB")を使用すると、新しいページがqueue.butに追加されます。使用されるメモリが高くなります。どのように私は古いUIViewControllerを使用してストーリーボードを交換することができます

古いページを新しいページに置き換えるにはどうすればよいですか?

答えて

0

クラスへの参照を保持し、内部にコンテンツを読み込むメソッドを持つことができます。

class gameViewController : UIViewController { 

    func loadContent() { 
     // this method should refresh content everytime. 
    } 

} 

他のクラスでは、以前のクラスへの参照を作成するだけです。

class SomeClass { 
    var referenceToGameClass : gameViewController! 


    func someFunc() { 
     self.referenceToGameClass.loadContent() 
    } 
} 

しかし、gameViewControllerクラスから出るときに同じ参照を保存するにはどうすればよいですか?あなたは上記の「工ass」に行っている間のは言わせて、多分あなたのprepareforsegue方法でこの行を追加することができます戻って同じgameViewControllerに「工ass」の外に移動するために、便利な

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if(segue.identifier == "segueID") { 
      let svc = segue.destinationViewController as! SomeClass 
     svc.referenceToGameClass = self 
    } 

} 

をそして、単純に使います。

self.presentViewController(self.referenceToGameClass, animated: true, completion: nil) 

これはちょっと混乱するかもしれませんが、それを慎重に数回読んだら、それを得るでしょう。あなたは私にも質問をすることができます!

+0

ありがとうございます。私はすでにこれらを行っている..私の問題はviewController(ゲームプレイページ)です。ユーザーが勝ち、新しいページにパスするとき、私は新しいページ(実際には新しいコンテンツの同じビューとコントローラー)に "presentViewController"を使用します。問題部分は、presentViewControllerを使用すると、新しいページがストーリーボードスタックに追加されます。この方法ではメモリが増えました。私はメモリが不必要に高くなるのを望んでいません。 –

+0

ナビゲーションコントローラの使用について考えましたか?これにより、最初のビューコントローラーから最後のビューコントローラーへの水平フローが作成されます。利点は、ナビゲーションコントローラのメソッドを使用できることです。 –

+0

これをチェックして理解してください:http://stackoverflow.com/questions/3852932/calling-poptorootviewcontrolanimated-after-dismissmodalviewcontrolleranimated –

関連する問題