2016-08-29 12 views
2

2つのView Controllerを作成しました。それぞれは、他のView Controllerにshow segueを実行するボタンを備えています。私のviewcontrollerがshow segueの後で初期化されていない

var counter = 0 
class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     counter += 1 

     print("init viewc \(counter)") 
    } 

    deinit { 
     counter -= 1 
     print("deinit viewc \(counter)") 
    } 
} 

deinitが、私はのViewControllerに戻るたびに、カウンタが増加している、と呼ばれることはありませんように思え:

init viewc 1 
init viewc 2 
init viewc 3 

をのように...私はここで何かが足りないのですか?私はショー・セグがそれがもはや必要でないのでメモリから発信者を解放するはずだったと思った。私は今、私がsegueするたびに新しいViewControllerオブジェクトを作成していますか?

+0

viewControllersプロパティを操作することができ、あなたのビューコントローラの単一インスタンス間で後方と前方の切り替えたい場合は、モーダルVCの間segueingていますストーリーボードで接続? – Dravidian

+0

いいえ、私は "現状ではなく" "ショー"を選択しました – vladakolic

+0

VCをインスタンス化してプレゼンテーションを試しましたか? – Dravidian

答えて

1

"show" segueを使用しているので、新しいView Controllerインスタンスを毎回作成していて、ビューコントローラの一番深い「スタック」を効果的に提示します。

あなたは、あなたがそのようなUITabBarControllerとして、コンテナビューコントローラを使用するか、UINavigationControllerを使用して

+0

1つのビューコントローラに分割して最初のビューコントローラに戻すことで問題を解決できました(最初のビューコントローラはそのまま残り、2番目のビューコントローラは削除されます)。それらを保持するナビゲーションコントローラはありません。これは問題ありませんか?私。これを行うときに常にナビゲーションコントローラにそれらを含めるべきですか? – vladakolic

+0

いいえ、巻き戻しのセグエはうまいです。ナビゲーションコントローラがない場合は、単に最初のビューコントローラの上に2番目のビューコントローラを表示し、巻き戻したときに2番目のビューコントローラを破棄します。 – Paulw11

関連する問題