viewの動的な切り替えのメモ

1/31追記:具体的には下記手順で切り替えを進めて行くと最初に挿入されたUIViewのみタッチ判定が聞かなくなってしまいました。(IntefaceBuilderの使い方のせいかもしれませんが..)
ですので今はNavigationControllerをつかいつつUIを表示しない形式ですすめています。
※ただしスタック管理をしようとすると色々難しいかも。


1/28追記:下記ですが結果的に不健全な思想のもとでとある不具合等も抱えてしまったので、参考にしないほうがいいです。

>removeFromSuperview
>Unlinks the receiver from its superview and its window, and removes it from the responder chain.


AppDelegate.window.rootViewControllerにViewController.viewを登録。
InterfaceBuilderでViewController.view にFirstView(UIView)を登録。
またViewControllerの@propertyとして


@property (nonatomic, strong) IBOutlet FirstView *firstView;
@property (nonatomic, strong) IBOutlet SecondView *secondView;


を定義してInterfaceBuilder上の2つのUIViewと結びつける。
※InterfaceBuilder上のClassの手入力が必要。

この状態からFirstViewを破棄しようとして、
[ViewController.view removeFromSuperview]を呼んでしまうと
windowレベルで何かが書き変わりアウト。


ViewController.view = secondView;


でセーフ。


ちなみに@property宣言でstrongの部分をweakにするとsecondViewの生成後にsecondView=nilが発生しアウト。
ARCだともう動的管理とかいっさいがっさい考えないで無心でstrongした方がいいのかもしれない。


サンプルコード
He_352076.zip