• ベストアンサー

自らのViewControllerにsegueする

iOS(XCode)プログラミングで、自らのViewController(以下vc)にSegueしたいと思っています。目的はステージクリアした後に、もう一度イニシャライズしてゲームをそのvcで行いたいからです。 ただし、戻る(dismiss)する必要はありません。メモリの事も考えてSegue元はメモリ解放もしたいです。 ・自らのvcにSegue設定する方法 ・戻る必要の無いSegueの遷移方法 を教えていただけないでしょうか。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

No.1です。 > ちなみに、以下をシームレス(親を感じさせない)に実現するにはどう実装すればいいかアイデアありませんか? 具体的には、親VCのviewDidAppearタイミングで 子VCに遷移(performSegueWithIdentifier) するだけでよいと思います。 (子VCがdismissしたら、親VCがまた現れようとしてviewDidAppearが 呼ばれるのでそのタイミングでまた子VCに遷移する) あと、画面遷移時のアニメーションもOFFにした方がよいかもしれません。

gorotetsu
質問者

お礼

ありがとうございます。 100%やりたかったことが実現できました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

たぶん、あなたが思っている通りの構造を実現するのは難しいと思います。 なぜなら、全てのオブジェクトには親子関係があるからです。 最初のViewControllerだって、UIWindowオブジェクトの子供です。 自ViewControllerが新しいViewControllerを生成して、 自分自身を消すには、自分のことを知っているオブジェクト (基本的に親オブジェクト)に「俺のことを忘れて、代わりに あたらしいやつのことを覚えてくれ」と言わなければなりません。 あなたがやりたいことを実現するには、少し構造が異なりますが 以下のようにするのが簡単だと思います。 ・親ViewController(以下親VC)と子ViewController(以下子VC)の2つを作る。 ・親VCは、子VCを作るだけ。 ・メインのゲーム処理は全て子VCで処理する。 ・ステージクリアしたら、子VCはdismissViewControllerで終了する。 ・子VCがdismissされ親VCに戻ってきたら、親VCは新しい子VCを生成する。 つまり、子供が死ぬたびに親が何度も同じ子供を産み直せばよいということです。

gorotetsu
質問者

お礼

ありがとうございます。非常に納得しました。 ちなみに、以下をシームレス(親を感じさせない)に実現するにはどう実装すればいいかアイデアありませんか? ・ステージクリアしたら、子VCはdismissViewControllerで終了する。 ・子VCがdismissされ親VCに戻ってきたら、親VCは新しい子VCを生成する。 質問回答に質問で恐縮ですが、ご助言いただけると幸いです。

すると、全ての回答が全文表示されます。

関連するQ&A